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