記一次Django踩坑:Django中request.META中存放客戶端請求頭數據,按如下方式取出數據:
request.META['some_key']
這樣可以獲取客戶端在請求頭中存放的{'some_key':'some_data'}數據,但是這樣不安全,推薦使用字典的get方法:
request.META.get('some_key', None)
這樣的方式在本地調試沒有任何問題,但是部署到服務器便出現了問題,輸出request.META發現沒有客戶端傳來的信息.
我的服務端環境:
- Nginx
- gunicorn
- django
- supervisor
看到rest-framework文檔中有寫到使用Apache配置Django時,有無法傳遞請求頭的情況,但我用的是Nginx,后來嘗試各種解決辦法終于發現:
使用類似'key'這樣的鍵傳遞請求頭可以被接收,但如果使用'some_key',加上一條下劃線就不能被接收了!...
暫不知道原因,現貼出解決辦法,給同樣碰到類似問題的同學.