【问题标题】:Cross-domain XHR to https address (SSL) fails in Firefox (works in Chrome)在 Firefox 中跨域 XHR 到 https 地址 (SSL) 失败(在 Chrome 中有效)
【发布时间】:2014-01-11 16:46:51
【问题描述】:

我正在尝试将跨域 XHR 设置为安全域。

我使用了以下代码:

this.post = function (url, data) {
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.open("POST",url,true);
    xmlhttp.withCredentials=true;
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
    xmlhttp.send(data);
}

我将此函数与 url 编码的字符串数据和 https://mydomainx.com/request 用作 url。

我在 Chrome 和 Firefox 上使用 Chrome 开发工具/Firebug(查看请求/响应标头)对其进行了测试。该代码适用于 Chrome(即发送请求,收到适当响应)。 不过,不安全的请求适用于 Firefox(当我使用 http://mydomainx.com/request 而不是 https 时)。

更具体地说,在 Firefox 上,似乎发送了 https 请求:POST 请求以正确的请求标头出现在 Firebug 中,但没有收到任何响应。我检查了端点服务器(mydomainx.com),它没有收到请求(说/var/log/apache2/access.log 和error.log)。当 xhr.readystate == 4 ----> status = 0,没有响应文本时,我还显示了 status / responseText。

我尝试在没有数据的情况下制作 XHR,或者使用 GET 而不是 POST,并且没有内容标题,并且使用文本/纯内容标题 => 完全相同的结果(适用于 http/https 中的 chrome,适用于 firefox http,不适用于带有 https 的 Firefox)。

我花了很多时间试图在谷歌上寻求解释但没有成功...任何帮助将不胜感激。 非常感谢

【问题讨论】:

    标签: javascript ajax firefox ssl xmlhttprequest


    【解决方案1】:

    您是否尝试过在 Firefox 选项卡中访问安全版本的 URL?听起来 Firefox 可能会卡在 SSL 证书上,并且可能希望您添加一个例外以在对该 URL 的 XHR 请求生效之前接受证书。

    【讨论】:

    • 谢谢!帮助我发现问题是确认证书密钥链并编辑 apache2 配置,如 startssl.com/?app=21 中所述。奇怪的是 Chrome 对此没有任何问题
    猜你喜欢
    • 2012-11-08
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2012-03-18
    • 2021-02-15
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多