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
}
相关推荐
Java程序员-小白18 小时前
Sa-Token过滤器引发的CORS误判问题
vue.js·elementui·axios·cors
大飞哥~BigFei2 天前
新版chrome浏览器安全限制及解决办法
java·前端·chrome·安全·跨域
我的golang之路果然有问题6 天前
实习中遇到的 CORS 同源策略自己的理解分析
前端·javascript·vue·reactjs·同源策略·cors
Benny的老巢8 天前
Cloudflare Workers CORS 跨域问题排查与解决
跨域·cloudflare·cors·workers
LongtengGensSupreme8 天前
后端设置了跨域但是还是提示跨域问题,原因是这里有两个独立的安全策略在起作用:Chrome和Edge浏览器安全策略强制修改方案
前端·chrome·edge·浏览器·跨域
bl4ckpe4ch10 天前
用可复现实验直观理解 CORS 与 CSRF 的区别与联系
前端·web安全·网络安全·csrf·cors
源代码•宸10 天前
goframe框架签到系统项目开发(补签逻辑实现、编写Lua脚本实现断签提醒功能、简历示例)
数据库·后端·中间件·go·lua·跨域·refreshtoken
勇气要爆发15 天前
跨域 (CORS) 原理:浏览器的“尽职保镖”
网络安全·跨域·cors
钦拆大仁16 天前
聊一聊跨域错误CORS
web·跨域
bkspiderx17 天前
HTTP跨域问题深度解析:4种实用解决方案与场景适配
网络·http·nginx反向代理·cors·跨域资源共享·http跨域问题