【问题标题】:How to send custom headers in OpenURI (Ruby) and check them如何在 OpenURI (Ruby) 中发送自定义标头并检查它们
【发布时间】:2016-11-16 15:50:47
【问题描述】:

在以下文档中找到此内容:https://ruby-doc.org/stdlib-2.1.0/libdoc/open-uri/rdoc/OpenURI.html

可以通过可选的散列参数指定额外的标头字段。

 open("http://www.ruby-lang.org/en/",
   "User-Agent" => "Ruby/#{RUBY_VERSION}",
   "From" => "foo@bar.invalid",
   "Referer" => "http://www.ruby-lang.org/") {|f|
   # ...
 }

谁能告诉我如何检查这是否正常工作?

【问题讨论】:

  • 首先要知道的是,OpenURI 是 Ruby 的 HTTP 工具包中最常用的代码片段之一,它有大量的审查和测试。因此,它的可能性真的很好,它正在做它应该做的事情。所以让我们扭转这种局面,并以 Stack Overflow 的方式来做:向我们展示你在做什么,并解释为什么你认为它没有做你想做的事。请参阅“minimal reproducible example”和“How to Ask”,包括链接页面。

标签: ruby-on-rails ruby ruby-on-rails-3 open-uri


【解决方案1】:

谁能告诉我如何检查他们[额外的标题字段]是否正常工作。

您可以使用netcat 监听特定端口,例如 2000:

$ nc -l 2000

并将主机相应更改为localhost:2000

# open.rb
require 'open-uri'

open("http://localhost:2000/",
  "User-Agent" => "Ruby/#{RUBY_VERSION}",
  "From" => "foo@bar.invalid",
  "Referer" => "http://www.ruby-lang.org/") {|f|
   # ...
}

通过以下方式运行程序

$ ruby open.rb

会让 netcat 显示这个:

$ nc -l 2000
GET / HTTP/1.1
User-Agent: Ruby/2.3.1
From: foo@bar.invalid
Referer: http://www.ruby-lang.org/
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept: */*
Host: localhost:2000

显然,标题工作正常。 (当然有)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2011-11-20
    • 1970-01-01
    • 2018-11-18
    相关资源
    最近更新 更多