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

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

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


一、什么是跨域?

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

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"
    }
  }
};
相关推荐
问心无愧05133 小时前
ctf show web入门160 161
前端·笔记
李小白664 小时前
第四天-WEB服务器基本原理,IIS服务
运维·服务器·前端
humcomm4 小时前
AI编程时代新前端职位
前端·ai编程
好家伙VCC4 小时前
Web Components主题热切换方案揭秘
java·前端
甲维斯5 小时前
Kimi版超级玛丽效果“惊人”,配额不足5厘米!
前端·人工智能
hboot5 小时前
AI工程师第一课 - Python
前端·后端·python
凉菜凉凉5 小时前
AI时代,被抛弃的前端
前端·ai
console.log('npc')5 小时前
AI前端工程与生成式UI学习路线
前端·人工智能·ui
梦曦i6 小时前
uni-router v1.1.1发布:守卫超时保护+路由监听
前端·uni-app
qq_2518364576 小时前
基于java Web网络订餐系统设计与实现 源码文档
java·开发语言·前端