2015-12-23 114 views
7

我使用下面的代码AJAX调用如何获得响应头在AJAX

$.ajax({ 
     type: "POST", 
     url: "http://******/cxf/view/*****", 
     data: {*****}, 
     headers: {*****}, 
     success: function (dt, status, request) { 
      console.log(request.getAllResponseHeaders()); 

     }, 
     error: function (jqXHR, status) { 

     } 
    }); 

这仅打印内容类型。在开发者控制台中,我可以看到响应中的标题数量。我怎样才能获得这些头在AJAX

enter image description here

+0

您可以在ajax设置中使用'dataType'。意味着你可以改变你想要的数据类型'json,xml等' – softsdev

+0

@softsdev我应该在dataType中给出什么? –

+0

请检查http://stackoverflow.com/questions/11440918/jquery-get-ajax-response-headers?answertab=active#tab-top –

回答

3

我用你用

success: function (dt, status, request) { 
      console.log(request.getAllResponseHeaders()); 

问题是不是与jQuery或阿贾克斯相同代码。响应头由Server设置。您发送请求的服务器没有设置标题!简单!!!!

当我试图用我的服务器[模糊的安全有些回复] 我得到了下面的输出

Snap of Console output

+0

开发者控制台如何显示这些头? –

+0

@AnoopLL您应该在返回响应时设置响应的标题。如果它确定你可以告诉我cfx/view的代码? –

+0

我在我的问题中添加了一个图像。其实我们正在使用休息电话和它的跨域。您可以在该映像中看到响应标题,这些标题是从服务器设置的。 –

12

这似乎是没有问题的。我试过,并得到它的作品。

使用JSONPlaceholder这里是我的代码

$.ajax({ 
    url: root + '/posts/1', 
    headers: {'test': 'test'}, 
    method: 'GET' 
}).then(function(data, status, xhr) { 
    console.log(xhr.getAllResponseHeaders()); 
}); 

结果是

Pragma: no-cache 
Date: Wed, 23 Dec 2015 06:36:57 GMT 
Via: 1.1 vegur 
X-Content-Type-Options: nosniff 
Server: Cowboy 
X-Powered-By: Express 
Vary: Origin 
Content-Type: application/json; charset=utf-8 
Cache-Control: no-cache 
Access-Control-Allow-Credentials: true 
Content-Length: 292 
Etag: W/"124-yv65LoT2uMHrpn06wNpAcQ" 
Expires: -1 
+0

检查我更新的问题。响应标题显示在开发人员控制台中。 –

5

在您的服务器,您需要添加

res.header("Access-Control-Expose-Headers", "header-you-want-to-expose"); 

,然后你就可以访问它在浏览器中。

+0

为什么这是downvoted? –

+0

@ ZachSmith也许downvoter冒充了推测的服务器技术(node?),尽管在这种情况下它可以很容易地转移到任何其他服务器上 - 所以这在我看来是不合适的。 – John

+0

添加此标题是答案。虽然OP没有具体说明它是一个交叉源请求,但它的屏幕截图中显示的是CORS头文件。从我+1。 –