2012-02-15 6 views
8

私はRails 3.2.1を使ってHTTP Postを作成しています。リクエストのヘッダをレールに追加

ヘッダーにX-FORWARDED FORを追加する必要があります。 Railsでどうすればいいですか?

コード:

post_data = { 
    "username" => tabuser 
} 

response = Net::HTTP.post_form(URI.parse("http://<my php file>"), post_data) 

おかげ

+0

これらのnet :: httpの例が参考になるでしょうか? https://github.com/augustl/net-http-cheat-sheet/blob/master/headers.rb – house9

+0

ありがとう!あなたが答えとしてそれを入れたいなら、私はそれを受け入れるでしょう –

+0

答えとして答えを加えました - 乾杯! – house9

答えて

9

これらのネット:: HTTPの例が役に立つかもしれませんか?

https://github.com/augustl/net-http-cheat-sheet/blob/master/headers.rb

+1

非常に役に立ちます。ありがとうございました。 – BlackHatSamurai

+0

リンクのみの回答はお勧めしません。答えの本文にヘッダーを追加する方法については、実際のコードが必要な場合があります。 –

+0

@AndrewGrimm - 私の答えは5年以上前からです。完璧ではありませんが、それは何ですか。 – house9

7

しかし私は、http://www.dzone.com/snippets/send-custom-headers-rub

から盗まれたこの読みやすく

require "net/http" 
require "uri" 

url = URI.parse("http://www.whatismyip.com/automation/n09230945.asp") 

req = Net::HTTP::Get.new(url.path) 
req.add_field("X-Forwarded-For", "0.0.0.0") 
req.add_field("Accept", "*/*") 

res = Net::HTTP.new(url.host, url.port).start do |http| 
    http.request(req) 
end 

puts res.body 

を見つけます!

あなたはあなたが行うことができない、アプリケーションをレールにヘッダ(Accept: application/json) 'を受け入れる]送信する場合:

req.add_field("Accept", "application/json")

をしかし、実行します。

req['Accept'] = 'application/json'

、この理由Railsは、 "、/"または "/"が含まれている場合にAcceptヘッダを無視し、HTML(add_fieldが追加されます)を返します。これは、本当に古いブラウザが間違った「Accept」ヘッダーを送信したためです。

5

どちらの回答もOKですが、重要なことを1つ追加します。あなたは「例外EOFError(到達したファイルの終わり)」を取得します。このUSE_SSLがなけれ

url = URI.parse('https://someurl.com') 
http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = true 
req = Net::HTTP::Get.new(url.request_uri) 
req["header_name"] = header 
response = http.request(req) 

:HTTPSを使用している場合は、SSLを使用してその行を追加する必要があります。

関連する問題