setFullResponse(true) 时没有自定义标题

Posted

技术标签:

【中文标题】setFullResponse(true) 时没有自定义标题【英文标题】:No custom headers when setFullResponse(true) 【发布时间】:2017-08-14 17:04:01 【问题描述】:

我正在使用Restangular。我想得到完整的回应,所以我设置了

Restangular.setFullResponse(true);

但后来我发现我的自定义标题不起作用。 setFullResponse() 方法的文档说:

为了让 Restangular 访问自定义 HTTP 标头,您的服务器必须响应 Access-Control-Expose-Headers: 设置。

我想发送我的自定义标头,但我不想更改服务器设置。可能吗? 如果我保留默认设置,即setFullResponse(false),则自定义标题没有问题。除了更改服务器设置之外,还有其他解决方案吗?

【问题讨论】:

【参考方案1】:

您从setFullResponse() 文档中引用的句子是关于您的Restangular 应用程序将能够访问的响应 中的哪些标头。这就是说,除非服务器已经配置为在 Access-Control-Expose-Headers 标头中发送正确的响应标头名称,否则无法从响应中访问大多数标头。

如果服务器不为该标头设置任何值,浏览器将允许您从 Web 应用程序中的客户端 javascript 访问的唯一响应标头是 Cache-ControlContent-Language, Content-Type, Expires, Last-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。

【讨论】:

以上是关于setFullResponse(true) 时没有自定义标题的主要内容,如果未能解决你的问题,请参考以下文章

Android ImageView - 当adjustViewBounds=true时minWidth/minHeight没有效果

每当 django 中的 debug=False 时,Heroku 都会给出服务器错误(500),而当 debug=True 时没有错误

设置 @JsonIgnoreProperties(ignoreUnknown = true) 时,有没有办法检测未映射的 json 属性?

vuecli3打包时开启了productionSourceMap为true却没有生成sourcemap文件?

当 URL 报告 NSURLUbiquitousItemHasUnresolvedConflictsKey 为 true 但没有其他版本的 URL 时,这意味着啥?

当我设置 minifyEnabled = true 时,应用程序无法使用 API