我需要对同一域的安全(HTTPS)URL进行异步调用。
目前该页面正在使用常规HTTP(非安全)。
换句话说:这是在同一个域中调用URL但使用HTTPS。
在将此调用切换到HTTPS之前,我结束了实现服务器端代理以允许跨域AJAX调用,但现在我面临相同的源策略,因为HTTP和HTTPS也被视为不同的来源。所以这个代理是无法使用的。
摘要:如何在此方案中执行跨域,异步POST请求?
各种说明:
答案 0 :(得分:14)
首先,我从@missingo和@PiTheNumber中提出了两个问题。
花了很多时间后,我得出结论我要将整个页面切换为HTTPS。那是因为:
大多数现代浏览器都支持CORS,但Internet Explorer从第8版开始有一个专有实现(XDomainRequest对象),可能在某些计算机上禁用(我的Internet安全区默认禁用跨域请求) )。
Opera不支持CORS。第12版将支持它,但这不是一个选项,因为用户应该首先采用这个新版本,这将不会在2天内。
我需要执行跨域请求,因为Web客户端应用程序必须请求位于另一个域中的RESTful服务层。没办法。
将所有内容切换为HTTPS会使服务层代理方法再次起作用(这是预期的行为)。
非常感谢,因为这两个答案都帮助我得出了很多结论。
答案 1 :(得分:9)
我正在使用Access-Control-Allow-Origin。你只需发送标题就可以了。
答案 2 :(得分:2)
您应该重新考虑通过HTTPS访问整个页面,或者至少确定这是不可行的。
通过HTTP加载初始页面和脚本,用户无法保证脚本是您最初打算发送的脚本,并且不受第三方操纵(例如,通过键盘记录密码)。这意味着绕过SOP的任何HTTPS请求都不会提供与最初通过HTTPS提供的页面的HTTPS请求相同的安全保证。
答案 3 :(得分:1)
有人看过:
https://github.com/jpillora/xdomain
它使用postMessage和iframe来实现cors请求,并且是跨浏览器(不需要在IE中修复XDomainRequests)。
也许它会允许跨协议的cors请求?