2011-05-24 47 views
6

我想閱讀文檔,我必須承認這不是一個容易的閱讀。我沒有任何問題(在添加Access-Control-Allow-Origin頭文件後)讀取responseText,但無法在除Firefox之外的任何地方獲取響應頭。如何通過跨域ajax獲取響應標題?

所以,我的問題是什麼是正確的方式來獲得響應頭,使用跨域AJAX?

我試過使用(Access-Control-Expose-Headers),但是再次失敗讀取標題。

回答

16

因此,它應該工作的方式是指定您希望客戶端在Access-Control-Expose-Headers標頭中訪問的標頭。例如,如果你的服務器設置一個Foo響應頭,並且希望客戶能夠讀取它,你的服務器應該發送下面的頭:

Access-Control-Expose-Headers: Foo 

在客戶端,你可以閱讀所有的通過調用xhr.getAllResponseHeaders()來返回響應頭。這將返回響應頭爲一個字符串,然後你可以用下面的代碼解析成一個對象:https://gist.github.com/706839

這是怎麼會事應該工作的說明。但是,請注意,舊版瀏覽器中存在無法在客戶端上讀取響應標頭的錯誤。在這裏看到更多的細節:CORS xmlhttprequest HEAD method

+0

嗨,我已經添加到服務器端API以下內容。 'header('Access-Control-Allow-Headers:temp');''header('Access-Control-Expose-Headers:temp);'header('temp:'。12345);'當我製作一個cURL對API的請求,我會得到標題以及響應數據。但是當我對同一個API進行AJAX調用時,我只能得到沒有頭的數據。 – 2013-11-23 04:58:06

+0

Anish,您的評論聽起來更合適,因爲它自己的堆棧溢出問題。 – monsur 2013-11-23 20:36:58

+0

即使在今天這個問題/答案是相關的。 – refactor 2017-07-06 12:14:18

1

我有同樣的問題,並找到了Chromium郵件列表的答案,這是固定在webkit中,它將被實施在crhomium〜19。

我將嘗試查找主題並更新我的答案。