什么是"接受"部分用于?

时间:2016-12-29 12:31:51

标签: ruby uri net-http

使用Net::HTTP连接到网站时,您可以使用#.each_header解析网址并输出每个网址标题。我理解编码和用户代理等方式,但不知道"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"]}

2 个答案:

答案 0 :(得分:1)

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

  

此字段包含以分号分隔的表示方案列表(Content-Type元信息值),将在此请求的响应中接受。

基本上,它指定了您可以回读的内容类型。如果您编写api客户端,例如,您可能只对application/json感兴趣(并且您对text/html不太关心。)

在这种情况下,您的标题将如下所示:

Accept: application/json

该应用程序将知道不以您的方式发送任何HTML。

答案 1 :(得分:1)

使用Accept标头,客户端可以指定他们愿意接受所请求URL的MIME类型。如果请求的资源是例如在多个表示中可用(例如,图像为PNG,JPG或SVG),用户代理可以指定他们只想要PNG版本。服务器可以遵守此请求。

在您的示例中,请求标头指定您愿意接受任何内容类型。

标题在RFC 2616中定义。