簡體   English   中英

在 Django 請求中獲取請求源

[英]Getting the request origin in a Django request

所以我正在嘗試在Django中啟用跨源資源共享,這樣我就可以發布到外部站點,並且在我設置時很容易做到

response["Access-Control-Allow-Origin"]="*" 

但我想讓它檢查來源是否在允許的來源列表中(本質上是將其限制為僅允許特定站點),但我似乎無法在 Django 請求中找到可以獲取來源信息的任何地方。

我嘗試使用request.META['HTTP_HOST']但這只是返回發布到的站點。 有誰知道我可以在 Request 對象的哪個位置獲取請求的來源?

至於從request中獲取 url(這是我正在尋找的),請改用request.META['HTTP_REFERER']

在 Django 中,

request.headers['Origin']

回答原來的問題。

您可以print(request.headers)查看標題中可用的所有內容。

我強烈建議您使用django-cors-headers 它允許您定義CORS_ORIGIN_WHITELIST ,它是以更 Python 的方式允許的來源列表。

要回答“有誰知道我可以在 Request 對象中的什么位置獲取請求的來源?”這個問題,request.META['REMOTE_ADDR'] 會滿足您的需求嗎?

你可以通過 request.META{"HTTP_ORIGIN"]

在 Django 2.2 中使用:

request.META.get('HTTP_REFERER')

確保請求屬性沒有 mode = no-cors

看:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin

“上述規則有一些例外情況;例如,如果在 no-cors 模式下發出跨域 GET 或 HEAD 請求,則不會添加 Origin 標頭。”

用這個:

origin = request.META.get("HTTP_ORIGIN")

這是django-cors-headers中間件中使用它的方式:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM