2016-08-15 22 views
2

正如你所看到的,我做了一個成功的請求。我遇到的問題是我列在下面的三行。HttpRequest :: getRequestHeaders只能返回頭部的一個子集?

var headerList = request.getAllResponseHeaders(); 
print("RunTime type of Header List: ${headerList.runtimeType}"); 
print("Header List Count: ${headerList.length}"); 
print("Header List is as follows: \n$headerList"); 

所以看來,請求,HttpRequest沒有返回足夠的信息。我希望它能夠返回所有頭信息的完整字符串,一個k => v對的Map或一個數組。

似乎它只取得了前64個字符。

爲什麼它不能得到所有的文件?理想情況下,我試圖通過request.getResponseHeader("Content-Disposition");得到「Content-Disposition」標題,但正如您可以想象的那樣,考慮到此信息,它實際上將返回null,因爲請求無法找到該信息。

enter image description here

+0

什麼做報表的打印打印? –

+0

您可以在控制檯中看到它們。 – Fallenreaper

回答

1

我想你需要在你的服務器上添加

Access-Control-Expose-HeadersContent-Disposition

Access-Control-Expose-Headers(可選) - 的XMLHttpRequest對象2 具有getResponseHeader()方法,它返回一個特定 響應標頭的值。在CORS請求期間, getResponseHeader()方法只能訪問簡單的響應頭。 簡單響應頭的定義如下:

  • 緩存控制
  • 內容語言
  • 內容類型
  • 過期
  • 上次修改
  • 附註

如果你希望客戶能夠訪問其他頭文件,你需要 必須使用Access-Control-Expose-Headers標題。 這個頭的值是一個以逗號分隔的響應頭列表,您希望 公開給客戶端。

http://www.html5rocks.com/en/tutorials/cors/

+0

已離線,爲延誤抱歉。有趣。我的意思是,你可以看到他們實際上是由服務器返回的,因爲他們在我的回覆中沒有? – Fallenreaper

+0

這不是100%清楚什麼「...希望客戶能夠訪問其他標題...」意味着但你列出的標題列出,你沒有得到的標題沒有列出。恕我直言,如果它們應該被服務器阻止,將這樣的標題發送到瀏覽器是沒有意義的。 –

+0

一位同事創建了一個用於從一個寧靜的終點下載文件的飛鏢破解工具,需要一個不記名的令牌才能訪問,所以他抓住它,然後檢查處置以確保該文件有一個名字......如果不是,它會會爲它設置一個默認名稱。我認爲我目前面臨的問題是,你可以通過這種反應來看到,處置被取出並在響應中,但是HttpResponse似乎並沒有通過'request.getAllResponseHeaders()方法打印出所有的頭文件。 '打出來的電話 – Fallenreaper