前端访问后台接口存在跨域问题,如何处理解决

前端跨域问题 最实用、最常用解决方案

现在遇到的前端访问后台接口跨域 ,是开发中最常见 的问题,我给你用最简单、最落地的方式讲清楚,直接照着做就能解决。


一、什么是跨域?

只要 协议、域名、端口 任意一个不一样,浏览器就会阻止前端请求后台,报:

plaintext

复制代码
No 'Access-Control-Allow-Origin' header is present

这就是跨域(CORS)


二、最推荐、最通用、生产环境也用的方案

✅ 方案 1:用 Nginx 反向代理解决(强烈推荐)

你刚才正在学 Nginx,正好用它解决跨域最完美

原理:

  • 前端 → Nginx(同域)
  • Nginx → 后台(服务器之间无跨域)
直接给你可复制的 Nginx 配置

nginx

复制代码
server {
    listen 80;
    server_name localhost;

    # 前端页面(本地文件或前端服务)
    location / {
        root   D:/project/frontend;  # 你的前端本地路径
        index  index.html;
    }

    # 接口代理 /api/ 开头的请求全部转发给后台
    location /api/ {
        # 转发到你的真实后台地址
        proxy_pass http://127.0.0.1:8080/api/;

        # 解决跨域的请求头
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

前端请求方式

js

复制代码
// 原来跨域写法
// axios.get("http://localhost:8080/api/user")

// 现在不跨域
axios.get("/api/user")

优点

  • 前端不用改代码
  • 后台不用改代码
  • 生产环境也能用
  • 你现在学 Nginx,这个最适合你

三、其他常用方案(你也可以了解)

✅ 方案 2:后台服务直接开启 CORS(最简单)

让后台在响应头加跨域允许,浏览器就不拦截了。

Java SpringBoot 示例

java

运行

复制代码
@Configuration
public class CorsConfig {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*")
                        .allowedMethods("GET", "POST", "PUT", "DELETE")
                        .allowCredentials(true);
            }
        };
    }
}
Node.js/Koa 示例

js

复制代码
app.use(async (ctx, next) => {
  ctx.set("Access-Control-Allow-Origin", "*");
  await next();
});

✅ 方案 3:前端开发环境代理(vue /react/vite)

只用于本地开发,上线不能用

Vue2 / Vue3 / Webpack

vue.config.js

js

复制代码
module.exports = {
  devServer: {
    proxy: {
      "/api": {
        target: "http://localhost:8080",
        changeOrigin: true
      }
    }
  }
};
Vite

vite.config.js

js

复制代码
export default {
  server: {
    proxy: {
      "/api": "http://localhost:8080"
    }
  }
};
相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大2 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师2 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端