我有一个api请求说“host / something / abc.xml”,它不发送content_type。 Rails仍然知道它需要用xml响应并发送一个xml数据。如果同一客户端使用“host / something / abc”调用,则会发送回HTML。 (两者都没有CONTENT_TYPE)
我想知道它是怎么发生的?我想检查Rack中间件客户端请求的内容? XML或JSON或HTML(我没有内容类型)。 Rack :: Request中是否有任何方法可以检查它?我知道有一个方法content_type但它返回我的nil。但是还是rails用xml响应..怎么??
答案 0 :(得分:0)
请参阅http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Content-Type
告诉您请求的类型。 Accept
告诉服务器客户端想要什么作为响应。
这应该将accept标头输出到控制台。
require 'rack'
class Accepter
def initialize(app, options={})
@app, @options = app, options
end
def call(env)
accepts = env["HTTP_ACCEPT"]
warn "accepts = #{accepts.inspect}"
@app.call
end
end