uniapp跨域问题如何解决?

在使用uniapp开发过程中遇到跨域问题,具体表现为请求接口时出现"No ‘Access-Control-Allow-Origin’ header"错误。请问应该如何解决这个问题?尝试过在manifest.json中配置代理,但似乎没有效果。有没有更完善的解决方案?需要区分开发环境和生产环境的不同处理方式吗?

2 回复

在uniapp的manifest.json中配置代理,或在服务端设置CORS允许跨域。H5端还可以用nginx反向代理。


在 UniApp 中,跨域问题主要出现在开发阶段的浏览器调试(H5 平台)中,因为浏览器会强制遵循同源策略。以下是解决方案:

1. 配置 manifest.json 文件(仅开发阶段有效)

在 H5 平台的开发配置中添加代理,避免浏览器跨域限制:

{
  "h5": {
    "devServer": {
      "proxy": {
        "/api": {
          "target": "https://your-api-domain.com",
          "changeOrigin": true,
          "secure": false,
          "pathRewrite": {
            "^/api": ""
          }
        }
      }
    }
  }
}
  • 说明:将请求到 /api 的路径代理到目标服务器,适用于本地调试。

2. 后端设置 CORS 头(生产环境必需)

在生产环境中,要求后端服务器配置 CORS(跨域资源共享),例如:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type

3. 使用云函数或中间服务器

通过云函数(如 uniCloud)或自建代理服务器转发请求,避免直接跨域。

注意事项:

  • 以上方法 1 仅用于开发,生产环境依赖后端配置或代理。
  • 小程序等平台无跨域问题,但需配置合法域名(在开发者后台设置)。

根据你的环境选择对应方案即可快速解决跨域问题。

回到顶部