无法从Ext.Ajax.request成功回调中的响应中获取标头

时间:2014-08-10 09:50:11

标签: extjs header response

我正在使用Ext.Ajax.request(在sencha toucn 2.3中)将数据发布到我的后端服务器。 我想从“成功”回调的“响应”参数中读取一些自定义标题,如下所示:

response.getResponseHeader('x-user-session');

我非常确定后端服务器会发送回多个标头并且'x-user-session'标头也存在,但有什么奇怪的:当使用“响应”对象时,我只能得到一个标题:“content-型”。

此问题已在此处提出:ExtJS 4.2.1: Cannot retrieve HTTP Response headers upon Ext.ajax.request callback,但尚无答案。

我已经尝试调试到“Ext.data.Connection”类,发现“Ext.data.Connection”中“response”对象的标题也只包含“content-type”标题。

有人能告诉我为什么会这样吗?我的后端程序有什么问题吗?或者只是Ext.Ajax的错误?如何获得我的自定义标题'x-user-session'的值?

谢谢~~

================== ANSWER =====================

我终于得到了sencha论坛的答案:http://www.sencha.com/forum/showthread.php?289879-the-response-for-Ext.Ajax.request-doesn-t-include-all-response-headers

这是关于标题的部分:

Access-Control-Expose-Headers (optional) - 
The XMLHttpRequest 2 object has a getResponseHeader() method that returns the value of
 a particular response header. During a CORS request, the getResponseHeader() method 
can only access simple response headers. 
Simple response headers are defined as follows:

Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma

If you want clients to be able to access other headers, you have to use the 
Access-Control-Expose-Headers header. The value of this header is a comma-delimited 
list of response headers you want to expose to the client.

我还没有验证它,但似乎在正确的轨道上:))

附上屏幕截图:

the headers returned from backend server response.getAllResponseHeaders() only return "content-type"

0 个答案:

没有答案