[英]Get client's request type using RACK middleware
我有一個api請求說“ host / something / abc.xml”,它不發送content_type。 Rails仍然理解它需要使用xml進行響應並發送xml數據。 如果同一客戶端使用“ host / something / abc”進行調用,則rails將發送回HTML。 (兩者都沒有CONTENT_TYPE)
我想知道怎么回事? 我想在Rack中間件中檢查客戶端正在請求什么? XML或JSON或HTML(我沒有內容類型)。 Rack :: Request中是否有任何方法可以檢查它? 我知道有一個方法content_type,但它返回零。 但是,rails仍然以xml響應。
參見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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.