[英]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.