Javascript-CORS-No';访问控制允许原点';标题已存在
我一直在与CORS合作,遇到了以下问题。 客户端抱怨不存在“访问控制允许来源”标题,而他们存在,并且客户端发出实际的POST请求,收到200个Javascript-CORS-No';访问控制允许原点';标题已存在,javascript,cors,same-origin-policy,Javascript,Cors,Same Origin Policy,我一直在与CORS合作,遇到了以下问题。 客户端抱怨不存在“访问控制允许来源”标题,而他们存在,并且客户端发出实际的POST请求,收到200个 function initializeXMLHttpRequest(url) { //the code that initialize the xhr var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.withCredentials = true;
function initializeXMLHttpRequest(url) { //the code that initialize the xhr
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.withCredentials = true;
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
//set headers
for (var key in headers) {
if (headers.hasOwnProperty(key)) { //filter out inherited properties
xhr.setRequestHeader(key,headers[key]);
}
}
return xhr;
}
含铬
chrome控制台日志
Chrome选项请求
Chrome POST请求
在Firefox中
Firefox控制台日志
Firefox选项请求
Firefox POST请求
值
null
对于访问控制允许源站
不起作用,必须源站域或*
允许任何源站
有关更多详细信息,请参见。简而言之:访问控制标题(例如,
访问控制允许源站
)需要显示,以响应选项和实际POST
function initializeXMLHttpRequest(url) { //the code that initialize the xhr
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.withCredentials = true;
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
//set headers
for (var key in headers) {
if (headers.hasOwnProperty(key)) { //filter out inherited properties
xhr.setRequestHeader(key,headers[key]);
}
}
return xhr;
}
工作流程:
来源、访问控制请求方法、访问控制请求标题
)访问控制允许来源、访问控制公开标头、访问控制最大年龄、访问控制允许凭据、访问控制允许方法、访问控制允许标头
)Access Control Allow Origin
头在服务器响应中不存在。虽然POST成功并在网络选项卡中显示了200个状态代码,xhr.status
为0,并且将触发xhr.onerror
。浏览器将显示错误消息我已将其设置为原始域。但是localhost也有这个问题。(本地主机请求其他域的资源。)