Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby NET:HTTP头文件_Ruby_Http_Header - Fatal编程技术网

Ruby NET:HTTP头文件

Ruby NET:HTTP头文件,ruby,http,header,Ruby,Http,Header,我正在尝试使用NET:httpgem向客户端的HTTP头添加一个api键,但由于某种原因,当我尝试测试它时,它似乎不起作用。基本上,服务器需要客户端的HTTP头或任何具有HTTP_x_api头的东西来服务请求 服务器代码 require 'sinatra' before do halt 400 if (env['API_KEY']) != 'wow' end get '/' do "boo" end 客户端代码 require 'ne

我正在尝试使用NET:httpgem向客户端的HTTP头添加一个api键,但由于某种原因,当我尝试测试它时,它似乎不起作用。基本上,服务器需要客户端的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\u API\u KEY']
。发件人:

HTTP\u
Variables:与客户端提供的HTTP请求头相对应的变量(即名称以HTTP\u开头的变量)。这些变量的存在或不存在应与请求中相应HTTP头的存在或不存在相对应