2012-10-01 177 views
2

我正在使用API​​,似乎Nginx和uWSGI正在刪除我傳遞的HTTP_AUTHORIZATION標頭。Nginx和uWSGI剝離HTTP_AUTHORIZATION

我發送一個curl POST到運行Django的API服務器。當我有Django打印出request.META的列表時,我發現缺少HTTP_AUTHORIZATION。

Nginx的配置包含以下:

uwsgi_pass_header HTTP_AUTHORIZATION; 
uwsgi_pass_request_headers on; 

但是做這些兩遍似乎沒有任何影響。

任何想法爲什麼有這種剝離...它發生在Nginx級別,uWSGI級別還是Django級別?

回答

4

嘗試將HTTP_AUTHORIZATION中的下劃線更改爲捲曲文章中的短劃線。

默認情況下,nginx將下劃線標記爲無效,並忽略無效標頭。

您可以使用nginx指令來允許使用underscores_in_headers on;的標頭中的下劃線,或者不要忽略與ignore_invalid_headers off;無效的標頭。

+0

underscores_in_headers on;沒有爲我工作。但關閉ignore_invalid_headers;工作....謝謝。但可以允許無效的頭文件嗎? – jbmyid

-1

我也有類似的問題,並增加了以下設置,以我的nginx的配置位置部分:

uwsgi_pass_header Authorization; 
uwsgi_pass_request_headers on; 

通知我用於uwsgi_pass_headerAuthorization

使用這些設置,我的應用程序開始接收auth頭文件,而不需要nginx的警告。

+0

但選項uwsgi_pass_header允許傳遞RESPONSE頭,而不是REQUEST頭。 –