【发布时间】:2013-11-03 10:03:14
【问题描述】:
在我对具有服务堆栈的服务器进行跨域调用之前,我已成功通过身份验证并获取我的令牌。
现在我想再调用一次来检索数据:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + getToken());
},
type: "GET",
url: requestUrl,
xhrFields: {
withCredentials: true
},
async: true,
dataType: 'json',
crossDomain: true
})
当我查看我的谷歌浏览器开发工具控制台时,我看到了这个:
OPTIONS http://MyPc.company:82//customers 404 (Not Found)
OPTIONS http://MyPc.company:82//customers Invalid HTTP status code 404
XMLHttpRequest cannot load http://MyPc.company:82//customers.
Invalid HTTP status code 404 (index):1
当我查看提琴手时,我看到了这个请求:
Inspectors => Auth:不存在授权标头。
检查员 => 原始:
OPTIONS http://MyPc.company:82//customers HTTP/1.1
Host: MyPc.company:82
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: GET
Origin: http://MyPc.company
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
Access-Control-Request-Headers: access-control-allow-origin, accept, access-control-allow-headers, authorization, access-control-allow-methods, content-type
Accept: */*
Referer: http://MyPc.company/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
为什么没有发送授权标头?乍一看,这似乎是我的起源问题。
【问题讨论】:
-
您无法控制通过预检 (OPTIONS) 请求发送的标头。在此处阅读预检:developer.mozilla.org/en-US/docs/HTTP/…
-
@RayNicholus “...由于设置了自定义标头,因此预检了此请求。”所以现在我知道我做了一个预检请求,因为我使用了一个授权头?但是要不然怎么把token发回token去查呢?
-
你能看一下这个answer,也许它可以解决你的问题。
-
你解决过这个问题吗?
标签: jquery servicestack cors