2017-01-09 50 views
0

我在我的應用程序中使用以下代碼來檢查是否提供了一些頭文件。該代碼在localhost中正常工作,但在應用程序部署到服務器時不起作用。基本上我試圖檢查請求中是否存在標題。在服務器上,我一直收到無效請求。當我傳遞accesstoken而不是access_token時,請求成功完成。因此,通過改變if ((request.headers.access_token && request.headers.refresh_token && request.headers.id_token) || request.headers.token)Access_token在localhost中工作而不在服務器中

代碼的工作,我的問題是,爲什麼會出現這種情況

const Hapi = require('hapi'); 
const Path = require('path'); 
const axios = require('axios'); 

    var tokenValidation = function (request, reply) { 


      if ((request.headers.access_token && request.headers.refresh_token && request.headers.id_token) || request.headers.token) { 

       if (request.headers.access_token != undefined) { 
        //do something 
        } 
        else { 
         return reply.continue(); 
        } 

       } else 
        return reply.continue(); 
      } 
      else { 
       var err = Boom.badRequest(‘Invalid request.'); 
       reply(err); 
      } 
     } 

     server.ext('onRequest', tokenValidation); 
+0

您NPM安裝在服務器上,是否正確? –

+0

什麼是'服務器'?請包括'require'語句。 – TMG

+1

您需要提供一個在本地主機但不在服務器上運行的請求示例(包含頭文件)。 –

回答

1

丟失(消失)HTTP頭 如果你不上;,NGINX明確設置underscores_in_headers將自動刪除帶有下劃線的HTTP標頭(根據HTTP標準,這是完全有效的)。這是爲了防止將標題映射到CGI變量時出現歧義,因爲在該過程中,破折號和下劃線都映射爲下劃線。

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#missing--28disappearing-29-http-headers

我們在NGINX明確underscores_in_headers上,否則他們將被忽略

相關問題