从HTTP到HTTPS的跨域请求立即中止
Cross domain request from HTTP to HTTPS aborts immediately
我正在尝试从HTTP页面向HTTPS服务进行跨域Web服务调用。
我已经在服务器上设置了正确的CORS头(它可以与HTTP-HTTP和HTTPS-HTTPS一起使用)。
如果我将请求更改为JSONp,则确实有效。
我在Chrome和Firefox中看到的是HTTPS请求从未发送过,它立即被中止,服务器也从未看到该请求。
值得注意的是,飞行前OPTIONS
请求被中止(并且它没有到达服务器)。
我找不到任何来源来解释这确实是不可能的(HTTP到HTTPS),更好的是:解释为什么。我可以理解HTTPS到HTTP是不安全的,但其他方式应该可以,对吧?这在我看来很傻,因为JSONp是有效的(但它很混乱)。
钞票
我还将withCredentials
设置为true
,并发送一些自定义标头和一个自定义Content-Type
:application/json
我正在使用常规的XMLHTTPRequest,它会回退到用于IE<9
好吧,我想通了。我用于HTTPS域的证书是自签名的,未经验证。将其添加到受信任的第三方权威机构列表中为我修复了它。
你可以通过IE在Windows 7中安装证书。这对我很有效:http://productforums.google.com/forum/#!主题/铬/bds-Ao9LigA%5B1-25%5Dzacharysyoung 2/11/09
发布请确保您以管理员身份运行IE(9),否则即使它说安装正确,安装也会失败。
- 打开Internet Explorer(IE)并导航到承载自签名证书的网站
- IE应该显示一个页面警告,"此网站的安全证书有问题。"
- 单击"继续访问此网站(不推荐)"链接
- 页面加载后,请查看地址栏的右侧。应该可以看到一个红色/粉色按钮,标签为"证书错误"。点击那个按钮
- 将出现一个名为"不受信任的证书"的弹出窗口。单击弹出窗口底部的"查看证书"链接
- 将出现另一个名为"证书"的弹出窗口。单击"安装证书…"按钮
- 将启动"证书导入向导"。单击"下一步"按钮
- **对于XP:a.保留"自动选择证书…"选项,然后单击"下一步"按钮。**对于Vista:a。选择"将所有证书放入以下存储"选项,然后单击"浏览"按钮。b.单击"显示物理商店"复选框。c.扩大"第三方根证书""文件夹,然后选择"本地计算机"。单击"确定"按钮d.单击"下一步"按钮
- 这将显示"完成证书导入向导"对话框。单击"完成"按钮
- 将出现"安全警告"弹出窗口。警告通知您证书的来源实际上无法验证。你应该知道证书的来源。如果需要,请单击"是"按钮以安装证书
- 将显示最后一个弹出窗口,通知您"导入成功"。单击"确定"按钮
- 重新启动/打开Chrome并导航到有问题的网站。您不应该受到安全警告页面的欢迎
除此之外,我想我可能在Chrome中发现了一个错误。请参阅:https://code.google.com/p/chromium/issues/detail?id=141839
设置easyXDM之类的东西可能更容易。它很快就开始了,并将为您提供所有的向后兼容性(一直到IE6)。这可能不是你正在寻找的本土解决方案,但如果你想匆忙跨域(在那里你可以访问双方),它是符合要求的。
你可以随时编写自己的iframe(postMessage)接口,但为什么要重新发明轮子(如果你使用不同的子域,别忘了设置你的document.domain)。
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- Angularjs http.get() Cross-Origin 请求被阻止
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 通过sdk/system/events在修改请求观测器上测试http
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 当我在chrome中切换设备模式时,$http.get请求失败
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- 使用angular js通过代理服务器请求Http
- 如何从HTTPS服务器请求HTTP服务器的javascript文件
- 阻止的跨来源请求:http://api.fixer.io/latest.
- 坏的请求.HTTP POST到api
- 有没有办法为AngularJS JSON请求($http/$resource)使用浏览器缓存?
- angular js在每个http请求$http上添加请求参数
- 当从不存在的站点请求HTTP响应时,Node.js脚本会中断
- 通过代理服务器请求HTTP呼叫