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

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

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


一、什么是跨域?

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

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"
    }
  }
};
相关推荐
广州华水科技7 小时前
北斗GNSS与单北斗变形监测在水库安全监测中的应用探索
前端
蜡台7 小时前
使用 html javascript 实现 金币落袋效果
前端·javascript·html
IT_陈寒7 小时前
为什么我的Python multiprocessing总是卡在join()?
前端·人工智能·后端
李白的天不白7 小时前
VUE依赖配置问题
前端·javascript·vue.js
m0_738120727 小时前
后渗透维权提权基础——CTF模拟红队进行权限维持(二)
前端·网络·windows·python·安全·php
AC赳赳老秦7 小时前
团队知识库搭建:用 OpenClaw 自动整理会议纪要、技术方案、故障复盘,同步到 Confluence / 语雀
开发语言·前端·python·github·visual studio·deepseek·openclaw
之歆7 小时前
Day05_CSS完整博客笔记(下)
前端·css·笔记
之歆7 小时前
Day05_CSS完整博客笔记(上)
前端·css·笔记
chenhua7 小时前
狗头管家终端工作台 - 让多终端管理变得优雅
前端·chrome·terminal·gemini·opencode·cluade