这是我使用的示例代码
$.ajax({
type: "get",
url: "http://myserver.com",
beforeSend: function (xhr, data) {
xhr.setRequestHeader("Authorization", "xxxx");
}
});
当我在firebug中检查此调用时,我看到了OPTIONS,而且我也看不到请求标头中的授权代码。 CORS标头已添加到服务器端。
response.addHeader("Access-Control-Allow-Headers", "origin, content-type, accept, x-requested-with");
response.addHeader("Access-Control-Max-Age", "60");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
想法是使用纯jQuery,如果可以执行这样的查询。
答案 0 :(得分:3)
由于您正在发送跨源ajax请求并使用此GET请求指定Authorization标头,因此正在进行预检(OPTIONS)。
另外(这不会导致问题)我建议删除contentType
选项。这在GET请求的上下文中没有意义。 GET请求不应包含任何内容。所有数据都应包含在查询字符串中,或者可能包含在标题中。
授权标头不会随OPTIONS一起发送。您必须在服务器端确认它,然后浏览器将发送基础GET。在https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS了解有关CORS的更多信息。