[英]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 標頭。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.