当我使用Google Chrome浏览器访问由Java Spring Boot应用程序托管的Angular应用程序时,Angular应用程序没有加载,但在Firefox中可以正常工作。
当我查看网络流量时,无法加载以下文件,并为它们返回403:
- runtime.07055e28c13b1a74.js
- polyfills.4e6aad8d16c34bbd.js
- main.6cd67be9c6d2749b.js
CSS和字体文件(woff2)加载成功。
我使用Okta作为IAM(无需登录即可访问首页),但在我的Spring安全配置中,我已配置为允许访问所有JS文件:
http.authorizeRequests()
.antMatchers("/", "/index.html", "/**.js", "/**.css").permitAll()
Google Cloud Run中的应用程序成功启动。但在Google Cloud Run的日志中,我看到以下警告(上面提到的3个js文件各一个):
{
httpRequest: {
latency: "0.011511853s"
protocol: "HTTP/1.1"
referer: "<my-address>"
remoteIp: "<remote-ip>"
requestMethod: "GET"
requestSize: "1178"
requestUrl: "<my-address>/main.6cd67be9c6d2749b.js"
responseSize: "716"
serverIp: "<server-ip>"
status: 403
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
insertId: "639f77b8000c61e0d23eef65"
labels: {1}
logName: "projects/original-advice-xxx/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2022-12-18T20:27:37.049604375Z"
resource: {2}
severity: "WARNING"
spanId: "4738744206884247185"
timestamp: "2022-12-18T20:27:36.811488Z"
trace: "projects/original-advice-xxx/traces/257d4794b443727cf7d37d1a0863e682"
traceSampled: true
}
在Google Chrome浏览器的控制台中,将打印以下错误:
...-ew.a.run.app/:12 GET https://...-ew.a.run.app/polyfills.4e6aad8d16c34bbd.js net::ERR_ABORTED 403
...-ew.a.run.app/:12 GET https://...-ew.a.run.app/main.6cd67be9c6d2749b.js net::ERR_ABORTED 403
...-ew.a.run.app/:12 GET https://...-ew.a.run.app/runtime.07055e28c13b1a74.js net::ERR_ABORTED 403
当我在本地运行应用程序时,这3个文件可以在Chrome中成功加载。
我在Google Cloud Run中的配置:
- 入口:允许所有流量
- 认证:允许未经身份验证的请求(对于公共API或网站)
我也试过:
gcloud run services add-iam-policy-binding <my-service> --member="allUsers" --role="roles/run.invoker"
有人知道为什么这3 JS文件不能正确加载谷歌浏览器?
1条答案
按热度按时间zu0ti5jz1#
将应用程序域(应用程序在Google Cloud Run中运行的地方)添加到Sping Boot CORS允许的来源列表解决了这个问题。