📌  相关文章
📜  来自原点“http:localhost:4200”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头. (1)

📅  最后修改于: 2023-12-03 15:26:34.575000             🧑  作者: Mango

介绍 CORS 阻止请求过程

当一个网站存在于浏览器中,并且正在向另一个网站或者服务器发送请求的时候,这个过程就称为跨域。在这个过程中,有时候浏览器会提示 “CORS策略阻止” 的错误,这也是因为浏览器的安全策略禁止跨域访问。

这个错误提示往往会被输出到控制台,而具体的错误信息则一般为:“来自原点 “http:localhost:4200”已被CORS策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。”。该错误信息的具体含义是请求的目标服务器没有正确设置 CORS头,导致本地域名访问被 CORS策略拒绝。

如何解决

在开发过程中,要避免跨域请求,可以使用代理 Proxy 或者通过调用后端 API来向其他域发送请求。而在生产环境中,推荐使用Nginx进行反向代理。

当出现CORS策略阻止请求的时候,需要相应的服务器响应加上 Access-Control-Allow-Origin 以及其它 CORS头来允许请求。

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

上述代码片段是设置CORS响应头来允许所有来源的跨域请求,并能响应POST, GET, PUT, DELETE, OPTIONS等请求方法。同时也设置了允许请求头带 X-Requested-With,并能响应Content-Type, Accept请求头。

需要注意的是,使用 “*” 来允许所有来源的跨域请求可能会导致安全问题,所以我们还是建议开发人员考虑每个跨域请求的来源和目的。最好能够将允许跨域访问的设置放在服务器端进行,这样可以更好地控制安全性。

结论

要避免CORS策略阻止请求,需要在后端加上 CORS响应头。这个过程需要开发人员或者DevOps人员重点关注,同时注意安全问题。