我正在尝试向使用会话密钥进行授权的外部应用程序服务器发送简单的 CORS 请求。
$.ajax({
type: "GET",
url: "https://192.168.1.72:8442/api/file/",
headers: {"Authorization": "3238562439e44fcab4036a24a1e6b0fb"}
});
它在 Firefox 18、Opera 12.12 和 Rekonq 2.0(也使用 WebKit)中运行良好,但在 Google Chrome 中不起作用(已尝试版本 21 和 24)。在 Google Chrome 中,它显示 OPTIONS Resource 无法在 Network Inspector 中加载,并且应用程序服务器没有收到任何请求。我试过 jQuery 1.8.3 和 1.9.0。
Request URL:https://192.168.1.72:8442/api/file/
Request Headers
Access-Control-Request-Headers:accept, authorization, origin
Access-Control-Request-Method:GET
Cache-Control:no-cache
Origin:https://192.168.1.72:8480
Pragma:no-cache
如果我从请求中删除标头,那么我也会在 Google Chrome 中收到 401,并且它能够在应用程序服务器上禁用授权的情况下访问资源。发送哪些标头并不重要。我能够发送的唯一标题是{“Content-Type”:“plain/text”}。所有其他标题名称/值在 Google Chrome 中都会出错,但在我上面提到的所有浏览器中都可以使用。
为什么谷歌浏览器不处理 CORS 请求中的标头?