我遇到了一个奇怪的问题。我有一个在端口 8080 上运行的 java spring 应用程序,在端口 3000 上运行的 Angular 应用程序。虽然请求返回状态 200,并且可以在浏览器网络选项卡中找到响应,但控制台抛出错误 XMLHttpRequest 无法加载' http://localhost:8080/apiname '。请求的资源上不存在“Access-Control-Allow-Origin” header 。原产地'http://localhost:3000/#/home因此不允许访问。。有什么方法可以在不对服务器端进行任何更改的情况下使其正常工作。感谢任何帮助
最佳答案
听起来您的计算机上有一项服务试图与另一项服务进行通信,但无论出于何种原因,它们都没有被识别为位于同一域中。通常,您必须为不在同一环境中的域添加跨域策略。
Access-Control-Allow-Origin header 是一个 CORS 标准,它指示您谁可以通过跨域策略发送通信。
您只能在端口 80 上托管一个网站,并且拥有两个网站不太有意义。一种 SSL(443) 和一种 HTTP(80),这可能就是它生效的原因,是因为您的端口。
对于简单的答案,请将 header 添加到服务器端响应中,并确保将该域和端口添加到您的跨域策略中。
我还鼓励您尝试了解为什么必须执行这些通信。您可以将这两项服务放入一个站点并消除这种需要。这是非服务器更改的最简单答案。
否则,您将必须添加它。这是一个安全协议(protocol)。有一些步骤可以将其删除,但这会让您面临无数的安全漏洞。
使用以下链接了解更多信息,您可以使用 * 而不是禁用其他方法。
https://enable-cors.org/server.html
Access-Control-Allow-Origin: *
上面的 header 将允许所有跨域策略,在服务器端实现。
关于javascript - API请求状态200不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44611248/