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