我面临一个奇怪的问题。我有一个在PORT 8080上运行的java spring应用程序和在端口3000上运行的Angular应用程序。在请求返回状态200并且可以在浏览器网络选项卡中找到响应时,但是控制台正在抛出错误< strong> XMLHttpRequest无法加载&#39; https://www.w3schools.com/nodejs/&#39; 。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。因此,&#39; http://localhost:8080/apiname&#39; 不允许访问。有没有办法让这个工作没有在服务器端进行任何更改。任何帮助表示赞赏
答案 0 :(得分:1)
听起来您的计算机上有一项服务试图与另一台服务器进行交谈,并且出于任何原因,他们都不会确定是在同一个域中。通常,您必须为不在同一环境中的域添加跨域策略。
Access-Control-Allow-Origin标头是CORS标准,它指示您可以通过跨域策略发送通信。
您只能在端口80上托管一个网站,拥有两个网站是没有意义的。一个SSL(443)和一个HTTP(80)所以这可能是它生效的原因,因为你的端口。
对于简单的答案,请将标头添加到服务器端响应中,并确保将该域和端口添加到您的跨域策略中。
我也鼓励您尝试查看您为何需要执行这些通讯。您可以将这两个服务放在一个站点中,并消除需求。这是非服务器更改的最简单答案。
否则,您必须添加它。它是一种安全协议。有一些步骤可以删除它,但这会让你面临无数的安全漏洞。
使用以下链接阅读更多内容,您可以使用*而不是禁用其他方法。
https://enable-cors.org/server.html
Access-Control-Allow-Origin: *
上面的标题将允许所有跨域策略,实现服务器端。
答案 1 :(得分:0)
您可以通过添加扩展程序
在Firebox中启用它https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/
答案 2 :(得分:-1)
您必须在服务器端启用CORS标头,或使用提供正确CORS标头的代理(拥有或a simple service like crossorigin.me用于开发目的)。
为了在Express.js应用中启用CORS,请参阅cors middleware - 对于简单的用例,只需一行代码 - app.use(cors())
。
对于桌面或应用内使用,如果您愿意,可以忽略CORS标头,因为您可以更好地控制HTTP客户端。