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

时间:2017-03-22 14:10:27

标签: http typescript header cors restangular

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

Restangular.setFullResponse(true);

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

  

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

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

1 个答案:

答案 0 :(得分:1)

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

如果服务器没有为该标头设置任何值,那么浏览器允许您从Web应用中的客户端JavaScript访问的唯一响应标头是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