【发布时间】: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