我正在使用Restangular。我想得到完整的答复,所以我设置了
Restangular.setFullResponse(true);
然后我发现我的自定义标头不起作用。 setFullResponse()
方法的文档说:
为了让Restangular访问自定义HTTP标头,您的服务器必须响应具有Access-Control-Expose-Headers:set。
我想发送自定义标题,但我不想更改服务器设置。可能吗?
如果我保留默认设置,即setFullResponse(false)
,则自定义标头没有问题。除了更改服务器设置外还有其他解决方案吗?
答案 0 :(得分:1)
您引用setFullResponse()
文档的句子是关于您的Restangular应用程序可以访问响应的标题。这就是说,除非服务器已配置为在Access-Control-Expose-Headers
标头中发送正确的响应标头名称,否则无法从响应中访问大多数标头。
如果服务器没有为该标头设置任何值,那么浏览器允许您从Web应用中的客户端JavaScript访问的唯一响应标头是Cache-Control
,
Content-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。