删除Http标头响应

时间:2014-06-24 18:05:30

标签: ruby-on-rails nginx http-headers xmlhttprequest httpresponse

我正在开发一个需要客户端进行api调用的项目 我的 rails应用程序和它返回XML而没有任何http标题信息。

目前正在返回:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/xml; charset=
X-Ua-Compatible: IE=Edge
X-Request-Id: c5602cd7eb23ca8137bef8bb1f0a4f8a
X-Runtime: 0.027900
Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-11-22)
Date: Wed, 18 Jun 2014 05:27:48 GMT
Content-Length: 529
Connection: Keep-Alive
Set-Cookie: _session_id=a8039d615674feec206e6c55a7a7afc8; path=/;
HttpOnly

<?xml version="1.0" encoding="UTF-8"?>
<cXML>
  <Response>
    <Status code="200" text="OK"/>
      <StartPage>
    <URL>http://localhost:3000/foobar/BAh7DDoNYmFza2V0aWRJI...
      </StartPage>
  </Response>
</cXML>

任何人都可以帮助删除控制器中的所有http标头或任何 配置?在下面的部分。

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Type: application/xml; charset=
X-Ua-Compatible: IE=Edge
X-Request-Id: c5602cd7eb23ca8137bef8bb1f0a4f8a
X-Runtime: 0.027900
Server: WEBrick/1.3.1 (Ruby/1.9.3/2013-11-22)
Date: Wed, 18 Jun 2014 05:27:48 GMT
Content-Length: 529
Connection: Keep-Alive
Set-Cookie: _session_id=a8039d615674feec206e6c55a7a7afc8; path=/;
HttpOnly

我现在正在使用nginx。

我有一些人说这是一种无意义的请求,因为HTTP服务器由 定义使用标题来相互交谈。但我也被告知W3不这么认为。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4

我还搜索了几个小时尝试其他解决方案来改变我的rails控制器而没有任何成功。最后的手段是否可能在Nginx中更改配置并且不会影响整个rails应用程序而不仅仅是api调用,还是有办法单独拨打一个电话?

提前致谢。

Ť

1 个答案:

答案 0 :(得分:1)

这是一个无意义的请求,是的。您可以使用HttpHeadersMore模块删除大多数响应标头。这样的事情应该这样做:

location /your/api/path {
  more_clear_headers '*';
}

但是,您无法删除Connections标头without patching nginx。即使你可以,你也无法删除响应的第一行(在这种情况下为“HTTP / 1.1 200 OK”)。没有该行,它不是HTTP响应。您将很难说服HTTP服务器发送非HTTP响应。

为了得到您所描述的内容,我认为您需要一个通过裸TCP套接字进行通信的自定义服务器。 This tutorial可能会帮助你。或者您可以在node.js(或其他工具)中实现应用程序的那部分?