首页 > 解决方案 > Django CORS ORIGIN WHITELIST 和 ALLOWED_HOST 没有过滤任何东西

问题描述

我正在尝试在同一个VPS. 我正在CORS为 Django 设置,我仍然可以将我的 API 与邮递员一起使用,因为我不应该这样做,因为我只允许我的VPS IP and localhost.

我首先尝试了 ALLOWED_HOSTS = ["\*"]并且CORS_ORIGIN_ALLOW_ALL = True 一切都按原样进行,我可以在任何地方使用我的 API,但是现在当我替换"\*"为我的allowed hosts并设置 cors 原点时,False它就像没有任何改变一样。我试图remove/set http从两者allowed hosts和白名单中,但它没有改变。

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = ["MYIP","127.0.0.1"]
ALLOWED_HOSTS = ["MYIP"]

我使用 python 3.6、django 2.2 和 react 16.8。感谢您的帮助

标签: pythondjangoreactjscorsaxios

解决方案


您不能使用 Postman 或 curl(在任何其他直接 HTTP 请求方法上)来测试 CORS。CORS 旨在告诉Web 浏览器(并且仅限于 Web 浏览器)它们应该允许从网页中访问哪些资源。

这样做的目的是防止带有恶意站点.com 的人诱使用户访问该站点以从您的服务器(例如 iframe)获取资源,以便用户认为他们在您的站点上,而实际上并非如此。

因此,您只能通过运行一个脚本来测试它,该脚本从不同域(从浏览​​器中)的网页中的 API 获取数据。

CORS 并不是为了让您的网站完全阻止访问。任何使用 curl(或邮递员)的机器仍然可以访问您的 API。


推荐阅读