簡體   English   中英

使用RACK中間件獲取客戶的請求類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM