You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已删除旧版本,Svelte应用仍调用App Engine错误端点?

问题:修正前端API端点拼写后仍请求错误地址?

我用Svelte/SvelteKit做前端、FastAPI做后端搭了个简单Web应用,部署在Google App Engine上。前端地址是example.uc.r.appspot.com,API地址是api-dot-example.uc.r.appspot.com。

API有个端点api-dot-example.uc.r.appspot.com/sample/run,接收表单数据返回JSON。最初部署的前端版本写错了端点,调用的是api-dot-example.uc.r.appspot.com/sampel/run(sampel拼写错误)。

后来我部署了修正后的版本,删掉了旧版本,现在每个服务只剩一个可用版本。按说前端不该再调用错误端点,但浏览器控制台还是报两个错误:

  1. 初始加载页面时:

start.41c53d35.js:1 Mixed Content: The page at 'https://example.uc.r.appspot.com/form' was loaded over HTTPS, but requested an insecure resource 'http://0.0.0.0:8000/sample/run'. This request has been blocked; the content must be served over HTTPS.

  1. 刷新页面时:

Access to fetch at 'https://api-dot-example.uc.r.appspot.com/sampel/run' from origin 'https://example.uc.r.appspot.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

第一个错误暂时不管,第二个错误和旧版本的错误完全一致。为什么现在的应用还会请求最新版本里根本没写的错误端点?

当前调用端点的Svelte代码是:

let response = await fetch(
    "https://api-dot-example.uc.r.appspot.com/sample/run",{
        method: 'POST',
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify(formData),
    },
)

可能的原因及解决办法

  • 浏览器缓存残留:浏览器大概率缓存了旧版本的前端静态文件(比如报错里的start.41c53d35.js),即使你部署了新版本,没清缓存的话浏览器还是会加载旧代码发请求。
    • 解决:用快捷键强制刷新页面(Ctrl+Shift+R / Cmd+Shift+R),或者手动清空浏览器对应网站的缓存。后续部署可以确认SvelteKit的静态资源哈希配置,让新版本资源文件名带唯一哈希,彻底避免缓存冲突。
  • GAE平台缓存:Google App Engine的CDN或边缘节点可能还存着旧版本的静态资源,虽然你删了旧版本,但缓存没同步更新。
    • 解决:登录GAE控制台,检查缓存策略并手动触发缓存失效;确认部署时完全替换了旧资源,没有残留文件。
  • 代码里还有遗漏的错误地址:你贴的代码是对的,但可能其他组件、配置文件或环境变量里还藏着sampel的错误拼写。比如某个路由组件没更新,或者环境变量里的API地址写错了。
    • 解决:全局搜索项目里的sampel字符串,确保所有地方都改成sample;检查SvelteKit的环境配置文件,确认API端点设置正确;再核对一次部署的代码分支,确保推的是修正后的版本。
  • Service Worker缓存问题:如果你的应用配置了PWA的Service Worker,它可能缓存了旧资源,导致页面刷新后还是用旧代码。
    • 解决:在浏览器开发者工具的「Application」标签里找到Service Worker,点击「Unregister」再刷新页面。后续部署要确保Service Worker能正确检测新版本并更新缓存。

内容的提问来源于stack exchange,提问作者fngarrett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:53:30