在 Django 请求中获取请求源



所以我正在尝试在 Django 中启用跨源资源共享,这样我就可以发布到外部站点,当我设置

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

但我想让它检查源是否在允许的源列表中(基本上是将其限制为仅允许特定站点),但我似乎在 Django 请求中找不到我可以获取源信息的任何地方。

我尝试使用请求。META['HTTP_HOST'],但这只返回正在发布的网站。有谁知道我可以在请求对象中的哪个位置获得请求的来源?

至于从request获取网址(这是我正在寻找的),请改用request.META['HTTP_REFERER']

在 Django 中,

request.headers['Origin']

回答原始问题。

您可以print(request.headers)查看标题中可用的所有内容。

使用这个:

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

这是django-cors-headers中间件中使用它的方式:

你可以通过请求获得它。META["HTTP_ORIGIN"]

我强烈建议你使用 django-cors-headers。它允许您以更pythonic的方式定义CORS_ORIGIN_WHITELIST这是允许的源列表。

要回答"有谁知道我可以在请求对象中的哪个位置获得请求的来源?",请求。META['REMOTE_ADDR'] 给你你需要的东西?

在 Django 2.2 中使用:

request.META.get('HTTP_REFERER')

确保请求属性没有模式 = no-cors

看:

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

"上述规则有一些例外;例如,如果在no-cors模式下发出跨源GET或HEAD请求,则不会添加Origin标头。

相关内容

  • 没有找到相关文章

最新更新