Javascript 从HTTP到HTTPS的跨域请求立即中止

Javascript 从HTTP到HTTPS的跨域请求立即中止,javascript,https,xmlhttprequest,cors,Javascript,Https,Xmlhttprequest,Cors,我正在尝试从HTTP页面到HTTPS服务进行跨域webservice调用 我已经在服务器上设置了正确的CORS头(它使用HTTP-HTTP和HTTPS-HTTPS) 如果我将请求更改为JSONp,它确实可以工作 我在Chrome和Firefox中看到的是,HTTPS请求从未发送,它会立即中止,服务器也从未看到该请求 值得注意的是,飞行前选项请求被中止(并且不会到达服务器) 我找不到任何来源解释这确实是不可能的(HTTP到HTTPS),更好的是:解释原因。我可以理解HTTPS到HTTP是不安全的,

我正在尝试从HTTP页面到HTTPS服务进行跨域webservice调用

我已经在服务器上设置了正确的CORS头(它使用HTTP-HTTP和HTTPS-HTTPS)

如果我将请求更改为JSONp,它确实可以工作

我在Chrome和Firefox中看到的是,HTTPS请求从未发送,它会立即中止,服务器也从未看到该请求

值得注意的是,飞行前
选项
请求被中止(并且不会到达服务器)

我找不到任何来源解释这确实是不可能的(HTTP到HTTPS),更好的是:解释原因。我可以理解HTTPS到HTTP是不安全的,但是其他方法应该可以,对吗?对我来说这似乎很愚蠢,因为JSONp可以工作(但它很混乱)

注释

我还将
with credentials
设置为
true
,并发送一些自定义标题和自定义
内容类型
应用程序/json


我正在使用常规的XMLHTTPRequest,并将其回退到IE的JSONp,这样可能更容易设置。这是相当快的开始,并将做所有的向后兼容性为您(所有的方式IE6)。它可能不是您正在寻找的本地解决方案,但如果您想要快速跨域(您可以访问双方),它符合您的要求


您可以随时编写自己的iframe(postMessage)接口,但为什么要重新发明轮子(如果您使用不同的子域,请不要忘记设置document.domain)。

好的,我知道了。我用于HTTPS域的证书是自签名且未经验证的。将其添加到受信任的第三方机构列表中为我修复了它

您可以通过IE在Windows 7中安装证书。这对我很有用: 2009年11月2日zacharysyoung发布 确保您以管理员身份运行IE(9),否则即使安装正确,安装也会失败

  • 打开Internet Explorer(IE)并导航到托管自签名证书的站点
  • IE应该显示一个页面警告,“此网站的安全证书有问题。”
  • 单击“继续访问此网站(不推荐)”链接
  • 加载页面后,请查看地址栏的右侧。应该可以看到一个标有“证书错误”的红色/粉色按钮。点击 那个按钮
  • 将出现一个标题为“不受信任的证书”的弹出窗口。单击弹出窗口底部的“查看证书”链接
  • 将出现另一个名为“证书”的弹出窗口。单击“安装证书…”按钮
  • “证书导入向导”将启动。单击“下一步”按钮
  • **对于XP:a。保留“自动选择证书…”选项,然后单击“下一步”按钮。**对于Vista:a。 选择“将所有证书放入以下存储”选项,然后 单击“浏览”按钮。B单击“显示physica存储” 复选框。C扩展“第三方根证书” “权限”文件夹,然后选择“本地计算机”。单击“确定” 按钮D单击“下一步”按钮
  • 这将显示“完成证书导入向导”对话框。单击“完成”按钮
  • 将出现“安全警告”弹出窗口。警告通知您证书的来源实际上无法验证。你 应该知道证书的来源。如果需要,请单击 “是”按钮以安装证书
  • 将显示最后一个弹出窗口,通知您“导入成功”。单击“确定”按钮
  • 重新启动/打开Chrome并导航到相关站点。您不应该看到安全警告页面
  • 除此之外,我想我可能在Chrome中发现了一个bug。见:

    我有一个有效的实现(JSONp)。但我想知道为什么Chrome和Firefox会阻止HTTP到HTTPS的请求。easyXDM看起来没有维护,不整洁,功能完全臃肿,需要。。闪光如果我想上传或真正大的请求,iframe回退可能会很有趣,但目前我没有这样的要求。我也不是“匆匆忙忙”。对于个别浏览器来说,协议在隐私和安全方面有很大的影响。新浏览器确实有“内容安全策略”,但不确定它是否是跨协议的。我可能会主动提出解决方案,但问题仍然存在。我相信上一次的改变是在不到一个月前(它只是相当稳定,不需要任何新功能)。至于flash,当postMessage不是一个选项,但它有一个大的(过度杀伤力的)功能集时,它被用作备用。我不确定你们的市场到底是什么,但你们也可以尝试和/或“访问控制允许来源”。同样,这些都是真正针对跨域,而不是跨协议的(但可能可以通过一个)。我使用的是CORS。。我想我提到了?什么是跨协议?HTTPS到HTTP当然,我可以理解,但是HTTP到HTTPS?你有我可以调查的实时网站吗?没有,我正在本地开发服务器上运行。非常有用。对于其他人来说,如果ssl证书出现问题,Firefox将自动中止选项请求。我只是通过直接进入域并为我的本地自签名添加一个例外来修复它。在那之后,选项请求工作得很好