API Gateway对接Fargate时本地资源(如sw.js)404错误求助
解决API Gateway + Fargate场景下Service Worker 404错误
以下是针对你遇到的Service Worker注册404问题的具体解决步骤:
检查API Gateway路由配置
确保API Gateway添加了针对/sw.js的转发路由:- 若使用REST API:新增GET方法,路径设为
/sw.js,集成请求指向Fargate服务的/sw.js路径,保持与根路径相同的集成配置(比如CloudMap服务发现、VPC链路等)。 - 若使用HTTP API:添加路由规则
GET /sw.js,集成目标指向你的Fargate服务实例,确保请求能正确转发到应用的5230端口。
- 若使用REST API:新增GET方法,路径设为
调整Service Worker注册路径
将navigator.serviceWorker.register("/sw.js")中的绝对路径改为相对路径:navigator.serviceWorker.register("./sw.js")相对路径会基于当前页面的URL自动拼接,避免API Gateway根路径与Fargate静态资源路径不匹配的问题。同时,Service Worker的作用域会自动匹配当前页面的路径范围,减少跨域/跨作用域的注册失败风险。
验证Fargate应用的静态资源服务
本地测试应用的5230端口,确认http://localhost:5230/sw.js能返回200状态码和正确的脚本内容。检查应用的静态资源配置:- 比如使用Express框架时,确保
express.static中间件正确指向包含sw.js的静态目录:app.use(express.static('public')); // 假设sw.js放在public目录下
- 比如使用Express框架时,确保
处理基础路径映射(若有配置)
如果你的API Gateway配置了自定义域名+基础路径(如https://xxxxxx.execute-api.us-east-1.amazonaws.com/myapp),需在注册时带上基础路径前缀:navigator.serviceWorker.register("/myapp/sw.js")
内容的提问来源于stack exchange,提问作者APigInBlanket
相关产品推荐
相关产品推荐

