我正在使用httplib和django。当我执行以下操作时:
conn.request("PUT", "/udj/users/3/library/songs", headers={"X-Udj-Ticket-Hash" : hash,
"content-type" : "text/json"}, body='{"blah": 2}')
我的服务器然后报告没有发送X-Udj-Ticket-Hash
名称的标头。相反,它显示已发送名称为HTTP_X_UDJ_TICKET_HASH
的标头。为什么我的标题名称会被修改? django是这样做的,还是客户端的问题?
答案 0 :(得分:0)
想出来,问题在于django。来自documentation here:
除了CONTENT_LENGTH和CONTENT_TYPE之外,如上所述,请求中的任何HTTP头都将转换为META密钥,方法是将所有字符转换为大写,用下划线替换任何连字符,并在名称中添加HTTP_前缀。因此,例如,名为X-Bender的标头将映射到META密钥HTTP_X_BENDER。
我真的不喜欢这个。有谁知道为什么这样做了?