2017-09-17 52 views
0

我無法自定義標題添加到從渲染()返回的響應:無法自定義頭添加到響應

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問題。

回答

0

此問題與Ajax無關。我使用this template tag來呼叫我的觀點。由於該代碼中的第32行,自定義響應標頭丟失。