2016-12-29 2 views
1

Net::HTTPを使用してWebサイトに接続すると、URLを解析して、#.each_headerを使用して各URLヘッダーを出力できます。私はエンコーディングとユーザーエージェントなどが何を意味するのか理解していますが、"accept"=>["*/*"]の部分は理解できません。これは受け入れ可能なペイロードですか?それとも別のことですか?"受け入れ"部分とは何ですか?

require 'net/http' 

uri = URI('http://www.bible-history.com/subcat.php?id=2') 
http://www.bible-history.com/subcat.php?id=2> 
http_request = Net::HTTP::Get.new(uri) 
http_request.each_header { |header| puts header } 

# => {"accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Ruby"], "host"=>["www.bible-history.com"]} 

答えて

1

https://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3

からこのフィールドは、この要求に応答して受け入れられる表現方式(コンテンツタイプメタ情報値)のセミコロンで区切られたリストを含んでいます。

基本的には、どのような種類のコンテンツを読み戻すことができるかを指定します。 APIクライアントを作成する場合は、たとえばapplication/jsonにしか興味がないかもしれません(また、text/htmlについては気にすることもできません)。

この場合、あなたのヘッダーは次のようになります。

Accept: application/json 

そしてアプリは、任意のHTMLにあなたの方法を送信しないように知っているだろう。

+0

ウェブサイト自体が受け入れるペイロードとは関係がありません。 – User9123

+2

いいえ、クライアントが受け入れようとしている応答のコンテンツタイプを指定しました。サーバー(例:POST本体)にデータを送信するときは、要求の 'Content-Type'ヘッダーを使用してそのコンテンツタイプを指定します。 –

+0

それははるかに意味をなさないです。ありがとう、大変感謝しています。 – User9123

1

Acceptヘッダーを使用すると、クライアントは要求されたURLに対して受け入れることができるMIMEタイプを指定できます。要求されたリソースが、例えば、 (PNG、JPG、SVGなどの画像)で利用可能な場合、ユーザエージェントはPNGバージョンのみを指定することができます。この要求を尊重するのはサーバーの責任です。

例では、要求ヘッダーは、任意のコンテンツタイプを受け入れることを指定しています。

ヘッダーはRFC 2616で定義されています。

関連する問題