带有反应前端的播放框架java后端不返回正确的http响应
Posted
技术标签:
【中文标题】带有反应前端的播放框架java后端不返回正确的http响应【英文标题】:Play framework java backend with react front end doesnt return proper http response 【发布时间】:2019-04-19 19:08:01 【问题描述】:下面是我的 application.conf 文件。并注意原因,有几行是,我尝试了几种组合来解决这个问题。但找不到任何修复。
在 React 前端获取 API 调用
fetch('http://localhost:9000/items',
method: 'GET'
).then(
response => response.json()
).then(
data =>
console.log(data);
).catch(
error =>
console.error(error);
console.log('errr');
);
Application.conf 文件
play.filters.hosts
allowed = ["."]
play.filters.disabled += "play.filters.headers.SecurityHeadersFilter"
play.filters.disabled += play.filters.cors.CORSFilter
play.filters.disabled += play.filters.csrf.CSRFFilter
play.filters.headers.contentSecurityPolicy = "default-src 'self'; img-src 'self' https://my.img.cdn.com"
# disable the built in filters
# play.http.filters = play.api.http.NoHttpFilters
play.filters.enabled += "play.filters.cors.CORSFilter"
play.filters.cors
# allow all paths
pathPrefixes = ["/"]
# allow all origins (You can specify if you want)
allowedOrigins = null
allowedHttpMethods = ["GET", "POST", "PUT", "DELETE"]
# allow all headers
allowedHttpHeaders = ["Accept", "Content-Type"]
下图显示了响应前端请求的选项请求。
以下是控制台中的错误和警告。
然后检查删除 http 请求中的标头。然后通过在网络选项卡中发送 GET 请求得到 200。但是在 fetch api 调用中抛出了异常
所以看起来应该是 play API 中的一个 cors 问题。但无法通过对应用程序配置进行不同的更改来弄清楚。
【问题讨论】:
为什么 CORS 过滤器同时出现在您的配置中的启用和禁用列表中? 只是做个测试。不过,问题已解决,感谢您的评论。 【参考方案1】:我已经解决了这个问题,下面将是答案。
play.filters.enabled += "play.filters.cors.CORSFilter"
play.filters.cors
allowedOrigins = ["http://localhost:8080", "http://localhost:9000"]
allowedHttpMethods = ["GET", "POST", "PUT", "DELETE"]
preflightMaxAge = 3 days
希望这对任何人都有帮助。
【讨论】:
以上是关于带有反应前端的播放框架java后端不返回正确的http响应的主要内容,如果未能解决你的问题,请参考以下文章