此问题在此处已有答案:
Will CORS policy prevent resource access from non-browser requests?(4个答案)
Why isn't my CORS configuration causing the server to filter incoming requests? How can I make the server only accept requests from a specific origin?(1个答案)
CORS allowed-origin restrictions aren’t causing the server to reject requests(3个答案)
三年前就关门了。
我尝试在同一个VPS
上部署一个Django应用程序(制作REST API)和一个React应用程序(使用我的API)。我正在为Django设置CORS
,我仍然可以使用我的API和postman,因为我只允许我的VPS IP and localhost
。
我已经尝试了第一次与ALLOWED_HOSTS = ["\*"]
和CORS_ORIGIN_ALLOW_ALL = True
,一切都像它应该的,我可以使用我的API从任何地方,但现在当我取代"\*"
与我的allowed hosts
,并设置cors origin允许所有在False
,它就像什么也没有改变。我试图从allowed hosts
和白名单remove/set http
,但它没有改变。
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。谢谢帮助
1条答案
按热度按时间hl0ma9xz1#
你不能使用Postman或curl(在任何其他直接HTTP请求方法上)来测试CORS。CORS旨在告诉Web浏览器(仅限Web浏览器)他们应该允许从网页中访问哪些资源。
这个想法是为了防止有人用malicious-site.com引诱用户访问该网站,从你的服务器上获取资源(例如iframe),这样用户 * 认为 * 他们在你的网站上,而实际上他们并不在。
所以你只能通过运行一个脚本来测试它,这个脚本从你的API中获取数据,这个API位于不同的域(从浏览器中)的网页中。在另一个网站上嵌入一个脚本调用你的API(例如,在你的机器上给你的本地主机另一个名字,并在那里打开它)。然后尝试运行脚本。你会看到你的脚本从你的网站上获取OPTIONS,然后在你的浏览器中出现一个错误。
CORS并不意味着你的网站完全禁止访问。任何使用curl(或postman)的机器仍然可以访问你的API。