ASP.NET Core WebAPI_解决跨域问题(前端后端)

说明

我的前端框架为Vue3

前后端跨域选其一即可

前端跨域

在项目的根目录找到vite.config.js文件,添加代码:

javascript 复制代码
  server: {
    proxy: {
      '/api': {
        target: 'https://localhost:xxxx',
        changeOrigin: true,
        secure: false
      },
    },
  }

axios代码片段:

javascript 复制代码
const req = axios.create({
    baseURL: '/api'
})

const login = async () => {
    const resp = await req.post('/login/verify', loginData.value)
    respData.value = resp.data.message
}

此时,请求实际上被代理为https://localhost:xxxx/api/login/verify,不会触发跨域问题

后端跨域

在项目的根目录找到Program.cs文件,

在 var app = builder.Build() 之前添加代码(注意事项已写在注释中):

cs 复制代码
// 跨域注册(于var app = builder.Build()之前)
builder.Services.AddCors(options =>
{   // CorsPolicy为跨域策略名(可选参数)
    options.AddPolicy("CorsPolicy", builder =>
    {
        builder
            .WithOrigins("http://localhost:5173")   // AllowAnyOrigin允许任何来源的跨域请求(.WithOrigins(url) 仅允许指定来源的跨域请求)
                                                    // 注意: URL末端切勿加上"/"
            .AllowAnyMethod()   // 允许任何HTTP方法
            .AllowAnyHeader()   // 允许任何Header
            .AllowCredentials();// 允许凭据(授权/身份验证)
        // 1/2/3为默认选项 4需要人为开启
        // 设置项不允许均为AllowAnyxxx()
    });
});

在 app.UseHttpsRedirection() 之前添加代码:

cs 复制代码
app.UseCors("CorsPolicy");

需要注意的是,此时axios中的代码片段需要稍作修改:

javascript 复制代码
// .net开启CORS时, 需要完整路径
const req = axios.create({
    baseURL: 'https://localhost:7043/api'
})

const login = async () => {
    const resp = await req.post('/login/verify', loginData.value)
    respData.value = resp.data.message
}
相关推荐
身如柳絮随风扬3 天前
深度解析跨域问题:真实场景、解决方案与进阶方案
跨域
We་ct5 天前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
TS-3314 天前
Codex 接入 DeepSeek API 完整配置文档
proxy·codex·deepseek·反代
行者-全栈开发15 天前
开源项目深度解析:Vue.js 响应式原理与源码拆解
proxy·响应式原理·源码解读·技术实操·vue.js 源码·依赖收集·开源项目解析
Tisfy19 天前
CORS 跨域重定向后 Origin 变 null —— 一次 Nginx 字体加载失败的排查记录
运维·nginx·html·cors
胡志辉的博客20 天前
本地明明好好的,怎么一上线就跨域了?把同源策略、前后端分工和 CORS 一次讲明白
前端·javascript·vue.js·reactjs·nextjs·跨域
csdn_aspnet22 天前
如何保护您的 .NET Web API 免受常见安全威胁
安全·xss·csrf·.net core·cors
软弹25 天前
快速了解前端中的跨域问题
前端·javascript·vue.js·react.js·node.js·跨域
csdn_aspnet1 个月前
在 .NET Core 8 中实现 CORS
.netcore·跨域·cors·.net8
彬sir哥1 个月前
android studio 如何关闭代理
android studio·proxy