我無法自定義標題添加到從渲染()返回的響應:無法自定義頭添加到響應
response = render(request, 'my_template.html', {'ctx1': 1, 'ctx2': 2})
response['My-Custom-Header'] = 'abc12345'
return response
這是一個Ajax請求的響應使用jQuery的$.get()
啓動。在Chrome上,響應將模板正確呈現,但它沒有自定義標題。如果我在返回之前打印response
對象,則會看到它具有我的自定義標題。
我認爲這個問題是因爲this answer,所以我加了Django的中間件來添加一個頭的所有響應:
class CustomHeaderMiddleware():
def process_response(self, request, response):
response['Access-Control-Expose-Headers'] = 'My-Custom-Header'
return response
我所有的迴應現已頭Access-Control-Expose-Headers: My-Custom-Header
,但我還是看到這個問題。
我的要求是本地的;我正在使用Django開發Web服務器。
如果我發送一個非Ajax GET請求,那麼無論我在Django中添加的自定義標題是否顯示在Chrome上的響應中。所以這個問題似乎僅限於Ajax請求。
我正在使用Django 1.11.4和Python2。
[編輯]
如果我捕捉Wireshark的響應,我看到它沒有My-Custom-Header
。此外,如果我在上述中間件的響應字典中添加自定義標題,則標題將顯示在Wireshark中,並且在Chrome中可見。所以這似乎是對Ajax請求的響應的Django問題。