2016-11-16 5 views
2

Нашли это в следующем документ: https://ruby-doc.org/stdlib-2.1.0/libdoc/open-uri/rdoc/OpenURI.htmlКак отправить пользовательские заголовки в OpenURI (Рубин) и проверить их

Дополнительные поля заголовка может быть задан необязательный хэш-аргумента.

open("http://www.ruby-lang.org/en/", 
    "User-Agent" => "Ruby/#{RUBY_VERSION}", 
    "From" => "[email protected]", 
    "Referer" => "http://www.ruby-lang.org/") {|f| 
    # ... 
} 

Может кто-нибудь сказать мне, как проверить, является ли это работает должным образом?

+1

Первое, что нужно знать, это то, что OpenURI является одним из наиболее часто используемых фрагментов кода в наборе инструментов Ruby для HTTP, и в нем много внимания и тестирования. В результате, шансы _REALLY_ хорошо, что он делает то, что должен. Итак, давайте обратимся к этому и сделаем это методом переполнения стека: покажите нам, что вы делаете, и объясните, почему вы думаете, что он не делает то, что вы хотите. См. «[Mcve]» и «[ask]», включая связанные страницы. –

ответ

3

Может кто-нибудь сказать, как проверить правильность работы [дополнительных полей заголовка].

Вы можете использовать netcat для прослушивания определенного порта, скажем, 2000:

$ nc -l 2000 

И изменить хост соответственно localhost:2000:

# open.rb 
require 'open-uri' 

open("http://localhost:2000/", 
    "User-Agent" => "Ruby/#{RUBY_VERSION}", 
    "From" => "[email protected]", 
    "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: [email protected] 
Referer: http://www.ruby-lang.org/ 
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 
Accept: */* 
Host: localhost:2000 

По-видимому, заголовки работают правильно. (конечно, они это делают)