下面有我的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。但是在获取api调用中引发了异常
因此,播放API似乎应该出现问题。但是无法通过对应用程序配置进行不同的更改来弄清楚。
答案 0 :(得分:0)
我已经解决了问题,下面将给出答案。
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
}
希望这对任何人都有帮助。