2017-03-22 28 views
0

我正在使用Restangular。我想得到完整的回覆,所以我設置setFullResponse時沒有自定義標題(true)

Restangular.setFullResponse(true); 

但後來我發現我的自定義標題不起作用。對於setFullResponse()方法文檔說:

爲了Restangular訪問自定義HTTP頭,服務器必須響應具有訪問控制展露報頭:設置。

我想發送我的自定義標題,但我不想更改服務器設置。可能嗎? 如果我保留默認設置,即setFullResponse(false),則自定義標頭不存在問題。除了更改服務器設置以外是否還有其他解

回答

1

您從setFullResponse()文檔中引用的句子是關於您的Restangular應用能夠訪問的響應的哪些標題。而這就是說,除非服務器已經配置爲在Access-Control-Expose-Headers頭中發送正確的響應頭名稱,否則不可能從響應中訪問大部分頭文件。

沒有服務器設置爲標題的任何值,唯一的響應頭:瀏覽器將讓你從客戶端JavaScript訪問你的web應用程序是Cache-ControlContent-LanguageContent-TypeExpiresLast-Modified & Pragma響應標頭。

關於該規範見https://fetch.spec.whatwg.org/#cors-safelisted-response-header-name

我想發送我的自定義標題,但我不想更改服務器設置。可能嗎?

如果您的意思是您希望在客戶端Restangular代碼發送到服務器的請求中發送自定義標頭,請提供有關您要發送哪些自定義標頭的更多詳細信息。

有過,雖然,還有另一種CORS標題您的服務器必須在響應發送:Access-Control-Allow-Headers響應頭。如果服務器未配置爲使用列出的正確頭名稱發送該請求,那麼您的請求將失敗。在這種情況下的原因是,您將點擊https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests