2011-06-09 100 views
3

我在後面運行帶有PhusionPassenger和NGINX的Rails 3.1。我通過一個簡單的HttpClient(OS X的GrahpicalHttpClient)發送請求。我的代碼需要在頭部有一個令牌和一個ID來驗證調用者的真實性。在開發模式中這不是問題,但是一旦我將它移入生產中,頭文件變量就會丟失。沒有顯示。標題變量在生產中丟失

下面是代碼:

@caller = Person.check_authentication_token(request.headers['person_id'], request.headers['authentication_token']) 

方法check_authentication_token返回nil如果任一變量是零。正如我所說,這在開發過程中工作正常,但request.headers ['person_id']和request.headers ['authentication_token']都沒有生產。有沒有其他人看過這個問題?

回答

12

Nginx默認將請求頭中的下劃線視爲無效並隨後刪除它們,請參閱http://wiki.nginx.org/HttpCoreModule#underscores_in_headers以瞭解如何解決此問題。

+1

Apache也出現這種情況。 http://stackoverflow.com/questions/22856136/why-underscores-are-forbidden-in-http-header-names – 2016-01-21 16:09:25

+1

拯救了我的生命。我瘋了,因爲有些頭部出現,有些沒有(帶下劃線的頭部) – Augusto 2017-01-18 21:41:55

+0

剛剛花了幾個小時拉我的頭髮,試圖找出這一個! -.- – aamirl 2017-03-17 08:13:41