【发布时间】:2020-04-20 15:57:44
【问题描述】:
我将 Spring Boot (Tomcat + Java) 用于我的后端应用程序,并将 React 用于我的前端。 我正在尝试从“http://localhost:3000”访问“http://localhost:8080/vr-backend-0.0.1-SNAPSHOT/stockdata/NIFTY19DECFUT?from=2019-12-03&to=2019-12-03”。
我在控制器级别和端点级别都添加了@CrossOrigin(origins = "*")。我得到空的结果。 我在控制器级别和端点级别都添加了@CrossOrigin。结果是空的。
如果我删除 @CrossOrigin 注释,我会收到 Cors 错误。这意味着注释是必要的。错误是“访问从源'http://localhost:3000'获取'http://localhost:8080/vr-backend-0.0.1-SNAPSHOT/stockdata/NIFTY19DECFUT?from=2019-12-03&to=2019-12-03'已被CORS策略阻止:请求的资源上不存在'Access-Control-Allow-Origin'标头。如果提供不透明的响应根据您的需要,将请求的模式设置为 'no-cors' 以获取禁用 CORS 的资源。”
如果我直接将链接复制粘贴到浏览器中,它可以正常工作并返回 JSON。 如果我调用“https://cdn.rawgit.com/rrag/react-stockcharts/master/docs/data/MSFT.tsv”,它也会返回结果。
为避免拼写错误,我使用了 console.log,并从 console.log 中粘贴了这些内容。
我正在使用 fetch 进行“获取”。
[编辑 1] 我正在查看 tomcat 日志,很快就会更新。
[编辑 2] TL;博士 这不是 CORS 问题。
完整说明: 1.“http://localhost:8080/vr-backend-0.0.1-SNAPSHOT/stockdata/NIFTY19DECFUT?from=2019-12-03&to=2019-12-03”的响应是200。
我登录了 spring boot 应用并查看了 tomcat 日志。它达到了控制器方法,我从数据库中得到了正确的结果。当我发回响应时,我在浏览器中得到空结果。如前所述,如果我直接点击 url,我会得到正确的结果。
这不是预检 OPTIONS 请求。
所以可以断定不是CORS问题。 @CrossOrigin 注释有效
我在发布问题后查看了日志。所以这个问题可以关闭,因为它是不正确的。如果我无法解决空响应问题,我将发布一个单独的问题,因为这个问题的标题具有误导性。
谢谢大家的回复。
【问题讨论】:
-
请使用stackoverflow.com/q/59555658/441757 编辑/更新问题并粘贴您用于发送请求和检查响应的确切前端 JavaScript 代码的 sn-p。
-
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?它是对 CORS preflight OPTIONS 请求的响应吗?
标签: java spring spring-boot cors