Net7配置跨域和部分跨域支持
跨域策略应该不算陌生,是浏览器的同源策略做的限制,下面基于后端开发来完成跨域的配置和策略
一:全局跨域支持
/// <summary> /// 跨域 /// </summary> public static class CorsExtension { /// <summary> /// 配置跨域策略 /// </summary> /// <param name="services"></param> public static void AddCorsExt(this IServiceCollection services) { //中间件解决跨域问题 services.AddCors(options => { // allcore: 策略名称 options.AddPolicy("allcore", corsBuilder => { corsBuilder.AllowAnyHeader() .AllowAnyOrigin() .AllowAnyMethod(); }); }); } /// <summary> /// 选择不同的跨域策略 /// </summary> /// <param name="app"></param> public static void UseCorsExt(this WebApplication app) { app.UseCors("allcore"); } }
二:部分跨域支持
//首先获取到配置里面的CorsUrl,可以按照你自己的规则操作
//比如:"CorsUrls": "http://localhost:8081,http://localhost:8080,http://localhost:9980,http://127.0.0.1:9980,http://data.mac.com",
string corsUrls = Configuration["CorsUrls"];
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins(corsUrls.Split(","))
//添加预检请求过期时间
.SetPreflightMaxAge(TimeSpan.FromSeconds(2520))
//如果不需要跨域请注释掉.AllowCredentials()或者增加跨域策略
.AllowCredentials()
.AllowAnyHeader().AllowAnyMethod();
});
});
然后就是Use了,这里很关键的是和Auth的顺序,如果先鉴权后才识别跨域,那鉴权没有意义,所以,应该顺序在auth前面
//UseCors,UseAuthenticationg两个位置的顺序很重要 app.UseCors(); app.UseAuthentication(); app.UseAuthorization();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!