簡體   English   中英

NET:HTTP標頭ruby gem

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM