[英]Cannot read response headers for CORS request with jQuery
我有一個有效的跨域Web服務調用,我將有效負載恢復,但我無法讀取響應中的標頭。 Chrome可以很好地向我顯示請求中的標題,但它們在jQuery的成功處理程序中不可用。
var data_obj = { "userName": "myUser", "password": "000000" }
$.ajax({
type: "POST",
url: 'https://localhost:8443/AuthService.svc/auth',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data_obj),
dataType: "json",
success: function(data, textStatus, jqXHR) {
console.log(jqXHR.getAllResponseHeaders());
}
});
記錄到控制台的唯一事情是:
Content-Type:application / json; 字符集= utf-8的
以下是Chrome針對OPTIONS和POST響應標頭報告的內容,請注意我嘗試通過Acccess-Control-Expose-Headers
公開Foo
和Authorization
:
OPTIONS
Acccess-Control-Expose-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Methods:POST, PUT, DELETE
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Content-Length:0
Date:Mon, 20 Jul 2015 16:26:00 GMT
Foo:Bar
POST
Acccess-Control-Expose-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Headers:Content-Type, Foo, Authorization
Access-Control-Allow-Origin:*
Authorization: custom_access_token = some_token
Content-Length:36
Content-Type:application/json; charset=utf-8
Date:Mon, 20 Jul 2015 16:26:00 GMT
Foo:Bar
任何人都可以找出為什么我只能在成功回調中訪問Content-Type
標頭?
更新
注意我重構了上面的內容以使用XMLHttpRequest
,行為仍然存在。
您的響應標頭中有一個拼寫錯誤:
Acccess-Control-Expose-Headers:Content-Type,Foo,Authorization
“訪問”中有三個“c”。 我承認我也花了太長時間才注意到。
雖然我沒有Chrome(只有Firefox),但我盡可能地復制了您的請求並修復了錯誤返回:
Foo:酒吧
授權:custom_access_token = some_token
內容類型:text / html; 字符集= utf-8的
看到另一個答案是建議你使用withCredentials
,如果由於某種原因你做到了這一點,請記住Access-Control-Allow-Origin
必須匹配瀏覽器可能自己設置的Origin
請求標頭,它不能是通配符。 我把它放在這里以避免另一個可能的問題。
origin參數指定可以訪問資源的URI。 瀏覽器必須強制執行此操作。 對於沒有憑證的請求,服務器可以將“*”指定為通配符,從而允許任何源訪問資源。
請參閱Mozilla文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.