【发布时间】:2015-12-16 01:58:56
【问题描述】:
今天发现 XMLHttpRequest 的一个奇怪行为。当我调用 GET 服务时,我发现如果我不设置 Authorization 标头,来自 firefox 的请求是相同的。但是,如果我添加“授权”标头 firefox 首先发送一个带有“OPTIONS”的请求,然后它会发送一个“GET”请求。
我知道动词“OPTIONS”必须在服务器端处理,但我只是想知道为什么 XMLHttpRequest 会这样。虽然是跨域请求,为什么浏览器要先发送“OPTIONS”请求。为什么添加“授权”标头会改变行为。
这是我的 Javascript 代码和 Fidler Inspector 报告。
var xmlhttp = new XMLHttpRequest();
var url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
xmlhttp.open('GET',url,true);
xmlhttp.setRequestHeader("Authorization", "xxxxxxxxxxxxxxxxxxx");
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
alert("OnReadystatechange + " + xmlhttp.readyState + " " + xmlhttp.status);
if (xmlhttp.readyState == 4) {
if ( xmlhttp.status == 200) {
}
else {
}
}
else
alert("Error ->" + xmlhttp.responseText);
}
以及带有授权标头的提琴手响应
但是当我不添加 Authorization 标头时,浏览器直接发送 GET 请求 no OPTIONS 请求。
【问题讨论】:
标签: javascript html firefox