[英]NET:HTTP headers ruby gem
我正在嘗試使用NET:HTTP gem將api-key添加到客戶端的http標頭中,但是由於某種原因,當我嘗試對其進行測試時,它似乎並沒有起作用。基本上,服務器需要使用http客戶端的標頭或具有http_x_api標頭的任何內容,以便處理請求。
服務器代碼
require 'sinatra'
before do
halt 400 if (env['API_KEY']) != 'wow'
end
get '/' do
"boo"
end
客戶代碼
require 'net/http'
require 'uri'
port = ENV['PORT'] || '7474'
res = Net::HTTP.start('localhost', port ) { |h| h.get('/')}
res.add_field('api-key', 'wow')
res.each_header do |key, value|
p "#{key} => #{value}"
end
puts (res.code == '200' && res.body == 'boo') ? 'OK' : 'FAIL'
this the response i get back :=>
"x-frame-options => sameorigin"
"x-xss-protection => 1; mode=block"
"content-type => text/html;charset=utf-8"
"content-length => 0"
"connection => keep-alive"
"server => thin 1.5.0 codename Knife"
"api-key => wow"
FAIL
在服務器上, env
中的HTTP標頭變量以HTTP_
為前綴,因此您需要檢查env['HTTP_API_KEY']
。 從文檔中 :
HTTP_
變量:與客戶端提供的HTTP請求標頭相對應的變量(即,名稱以HTTP_開頭的變量)。 這些變量的存在與否應與請求中適當的HTTP標頭的存在與否相對應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.