我的回复标题如下所示
HTTP/1.1 200 OK
Server: nginx/1.9.7
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-On-Trial: 1
Cache-Control: no-cache
Access-Control-Allow-Origin: http://localhost:4200
Vary: Origin
Date: Sun, 29 May 2016 00:37:31 GMT
但是当我在RESTAdapter handleResponse函数中执行console.log(headers)时,所有内容都是
EmptyObject {Content-Type: "application/json", Cache-Control: "no-cache"}
如何访问X-On-Trail标头或我可能需要的任何其他自定义标头?
我不确定这是否重要,但我使用的是ember-simple-auth。这会剥掉标题吗?
答案 0 :(得分:1)
我检查消息来源。 .handleResponse
is called from .ajax
ajax(url, type, options) {
var adapter = this;
var requestData = {
url: url,
method: type
};
return new Ember.RSVP.Promise(function(resolve, reject) {
var hash = adapter.ajaxOptions(url, type, options);
hash.success = function(payload, textStatus, jqXHR) {
let response = adapter.handleResponse(
jqXHR.status,
parseResponseHeaders(jqXHR.getAllResponseHeaders()), // try to check both in debugger
payload,
requestData
);
因此,只需尝试停在parseResponseHeaders(jqXHR.getAllResponseHeaders())
行并检查jqXHR.getAllResponseHeaders()
即可。如果没问题 - 请检查parseResponseHeaders()
如果您有项目的公共链接,或者您可以使用REstAdapter为任何公共项目提供链接,我将很乐意帮助您进行调试
关于条带化 - 它会跳过不包含冒号的标题
P.S>感谢@Vlad xmlHttp.getResponseHeader + Not working for CORS
"Access-Control-Expose-Headers"
用于响应预检请求以指示哪些HTTP标头可以>在提出实际请求时使用。
Access-Control-Allow-Headers: <field-name>[, <field-name>]*