当前位置:  开发笔记 > 编程语言 > 正文

AJAX,子域和SSL

如何解决《AJAX,子域和SSL》经验,为你挑选了1个好方法。

我有一个网站foo.com,它向bar.foo.com发出ajax请求.这会有用吗

另外,如果foo是安全连接,https,bar.foo.com也需要是https吗?这两个站点可以使用不同的证书吗?



1> joelhardi..:

使用plain-http AJAX:您正在讨论跨域XMLHttpRequest,这是浏览器不允许的.有一个W3C提案有待未来以安全的方式实现(部分由IE8,IIRC实施),但目前绝对不可能.

然而,安全地做到这一点有变通方法:子空间(使用iframe和document.domain),片段标识符技术(再次使用iframe)和window.name技术(再次,iframes!).

就SSL而言,您可以为域和子域购买单独的证书,或者为它们两者购买单个通配符(*.foo.com)证书(当然,通配符证书将更加昂贵).

如果您有一个请求来自其他域的项目的HTTPS页面,只要一切都是HTTPS,一切都会好的.这意味着如果您使用iframe解决方法之一,则必须在iframe https://src属性中指定方案URL .

最后一种效率较低的解决方法是https://foo.com让代理请求的脚本不安全http://bar.foo.com.(这也解决了XHR跨域问题,所以你可以忽略其他的解决方法.)当然,这意味着你要发送XHR请求https://foo.com/someurl,然后点击http://bar.foo.com/someurl,接收响应并将其发送回浏览器,所以在性能方面,如果你有这个选项,只需将bar.foo.com的服务器端功能移到foo.com上就会好得多.但是,如果您无法移动服务器脚本,那么代理就是可行的方法.

编辑:在做了一些额外的测试并获得iframe AJAX解决方法(#fragmentidentifier one)以在不同的HTTPS域之间工作之后,我更改了最后3个grafs.你可以做使用I帧SSL跨域AJAX只要一切都httpshttps方案在iframe中使用src.总结:

    简答:不,真正的跨域XHR是不允许的

    使用iframe的解决方法:更高效,需要2个SSL证书(或通配符证书),有点复杂

    使用代理的解决方法:效率较低,可以使用1或2个SSL证书(1个通过http向bar.foo.com发送后端请求),有点复杂

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有