簡體   English   中英

無法使用jQuery讀取CORS請求的響應頭

[英]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公開FooAuthorization

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM