Hal*_*yon 21 javascript https xmlhttprequest cors
我正在尝试从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和JSONp的后备,IE <= 9
Hal*_*yon 11
好的,我明白了.我用于HTTPS域的证书是自签名和未验证的.将其添加到受信任的第三方机构列表中为我修复了它.
您可以通过IE在Windows 7中安装证书.这对我有用:http :
//productforums.google.com/forum/#!topic/chrome/bds-Ao9LigA%5B1-25%5D
post by zacharysyoung 2/11/09
确保以管理员身份运行IE(9),否则安装将失败 - 虽然它说它安装正确.
- 打开Internet Explorer(IE)并导航到托管自签名证书的站点.
- IE应显示一个页面警告,"此网站的安全证书存在问题."
- 点击"继续浏览此网站(不推荐)"链接.
- 页面加载后,请查看地址栏的右侧.应该可以看到标有"证书错误"的红色/粉红色按钮.单击该按钮.
- 将出现一个名为"不受信任的证书"的弹出窗口.单击弹出窗口底部的"查看证书"链接.
- 将出现另一个名为"证书"的弹出窗口.单击"安装证书..."按钮.
- 将启动"证书导入向导".单击"下一步"按钮.
- **对于XP:a.选中"自动选择证书..."选项,然后单击"下一步"按钮.**对于Vista:a.选择"将所有证书放在以下商店中"选项,然后单击"浏览"按钮.湾 单击"显示physica商店"复选框.C.展开"第三方根证书颁发机构"文件夹,然后选择"本地计算机".单击"确定"按钮.d.单击"下一步"按钮.
- 这应显示"完成证书导入向导"对话框.单击"完成"按钮.
- 将出现"安全警告"弹出窗口.警告通知您证书的来源实际上无法验证.您应该知道证书的来源.如果这样做,请单击"是"按钮以安装证书.
- 最后一个弹出窗口通知您,"导入成功"将显示.单击"确定"按钮.
- 重新启动/打开Chrome并导航到相关网站.您不应该受到安全警告页面的欢迎.
除此之外,我想我可能在Chrome中发现了一个错误.请参阅:https: //code.google.com/p/chromium/issues/detail?id = 141839