使用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"]}
答案 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中定义。