翼度科技»论坛 编程开发 .net 查看内容

前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30

前言

可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。
所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责提供API接口和数据处理,而前端通过各种现代的JavaScript技术如 AJAX 或者 Fetch 等,来调用后端提供的API接口获取数据,从而构建页面展示数据和用户交互。
前后端分离可以给信息系统项目开发带来很多好处,比如有效地降低了系统的耦合度,前后端开发人员专注于各自的领域,提高了开发效率等等。
但前后端分别部署,也会不可避免地带来跨域的问题。
解决跨域有很多方法,比如通过 Nginx 转发等等方式。作为一款优秀的 Web 开发框架,asp.net core webapi 也可以优雅地解决跨域问题。
Step By Step 步骤


  • 创建一个ASP.NET Core webapi 项目
  • 打开 Program.cs
  • 在语句 var app = builder.Build(); 之前注册跨域服务
    1. var builder = WebApplication.CreateBuilder(args);
    2. ......
    3. builder.Services.AddSwaggerGen();
    4. //配置前端网址,可以写在配置文件中实现灵活配置
    5. string[] urls = new[] { "http://localhost:5173" };
    6. //注册跨域服务到容器中
    7. builder.Services.AddCors(options =>
    8.         options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
    9.         .AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
    10. ......
    11. var app = builder.Build();
    复制代码
  • 在语句 app.MapControllers(); 之前启用跨域中间件,最好是一开始就启用
    1. app.UseCors();
    复制代码
  • 这样简单两步配置就轻松优雅地解决了跨域问题了
完整代码:
  1. var builder = WebApplication.CreateBuilder(args);
  2. // Add services to the container.
  3. builder.Services.AddControllers();
  4. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  5. builder.Services.AddEndpointsApiExplorer();
  6. builder.Services.AddSwaggerGen();
  7. string[] urls = new[] { "http://localhost:5173" };
  8. builder.Services.AddCors(options =>
  9.     options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
  10.     .AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
  11. var app = builder.Build();
  12. // Configure the HTTP request pipeline.
  13. if (app.Environment.IsDevelopment())
  14. {
  15.     app.UseSwagger();
  16.     app.UseSwaggerUI();
  17. }
  18. app.UseCors();
  19. app.UseHttpsRedirection();
  20. app.UseAuthorization();
  21. app.MapControllers();
  22. app.Run();  
复制代码
来源:https://www.cnblogs.com/JackyGz/p/17970668
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具