首页 > 编程语言 >前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

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

时间:2024-01-17 18:13:36浏览次数:40  
标签:webapi core 跨域 builder 前后 var Services app

iamge

前言

可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。

所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责提供API接口和数据处理,而前端通过各种现代的JavaScript技术如 AJAX 或者 Fetch 等,来调用后端提供的API接口获取数据,从而构建页面展示数据和用户交互。

前后端分离可以给信息系统项目开发带来很多好处,比如有效地降低了系统的耦合度,前后端开发人员专注于各自的领域,提高了开发效率等等。

但前后端分别部署,也会不可避免地带来跨域的问题。

解决跨域有很多方法,比如通过 Nginx 转发等等方式。作为一款优秀的 Web 开发框架,asp.net core webapi 也可以优雅地解决跨域问题。

Step By Step 步骤

  1. 创建一个ASP.NET Core webapi 项目

  2. 打开 Program.cs

  3. 在语句 var app = builder.Build(); 之前注册跨域服务

    var builder = WebApplication.CreateBuilder(args);
    ......
    builder.Services.AddSwaggerGen();
    
    //配置前端网址,可以写在配置文件中实现灵活配置
    string[] urls = new[] { "http://localhost:5173" };
    
    //注册跨域服务到容器中
    builder.Services.AddCors(options =>
    	options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
    	.AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
    ......
    var app = builder.Build();
    
  4. 在语句 app.MapControllers(); 之前启用跨域中间件,最好是一开始就启用

    app.UseCors();
    
  5. 这样简单两步配置就轻松优雅地解决了跨域问题了

完整代码:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
string[] urls = new[] { "http://localhost:5173" };
builder.Services.AddCors(options =>
    options.AddDefaultPolicy(builder => builder.WithOrigins(urls)
    .AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseCors();
app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();  

标签:webapi,core,跨域,builder,前后,var,Services,app
From: https://www.cnblogs.com/JackyGz/p/17970668

相关文章

  • C# 自定义日志中间件 ASP.NET Core Web API
    自定义日志中间件usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Http.Extensions;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Logging;usingNewtonsoft.Json;usingSystem;usingS......
  • C# 下载文件 (ASP.NET Core Web API )
    usingMicrosoft.AspNetCore.Mvc;usingSystem.IO;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.AspNetCore.Authorization;usingMicrosoft.Extensions.Logging;usingMicrosoft.AspNetCore.StaticFiles;usingSystem.Threading.Tasks;namespaceFCore.Saas.......
  • ASP.NET Core 中AOP(面向切面编程)的支持方式
    在ASP.NETCore中,AOP(面向切面编程)的支持可以通过以下方式实现:过滤器(Filters):ASP.NETCore提供了多种类型的过滤器:身份验证过滤器(AuthenticationFilters):用于验证用户身份。例如,[Authorize] 属性可以应用在控制器或动作方法上,确保只有经过身份验证的用户才能访问。授权......
  • .net core 中什么是中间件
    在.NETCore中,中间件(Middleware)是ASP.NETCore应用程序处理请求和响应的组件。中间件位于应用程序的请求处理管道中,它可以截获请求,执行一些逻辑,并将请求传递给下一个中间件或终止请求的执行。中间件的主要作用是实现横切关注点,处理跨请求的功能和任务,例如身份验证、异常处理......
  • 界面组件DevExpress ASP.NET Core v23.2 - 拥有全新的主题样式
    DevExpressASP.NETCore Controls使用强大的混合方法,结合现代企业Web开发工具所期望的所有功能。该套件通过ASP.NETRazor标记和服务器端ASP.NETCoreWebAPI的生产力和简便性,提供客户端JavaScript的性能和灵活性。ThemeBuilder工具和集成的MaterialDesign、通用主题集可以让......
  • 麒麟linux安装net8并配置netcore项目网站运行
     1.安装net8执行下面命令。从微软官方下载net8:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-8.0.101-linux-x64-binaries  然后进入linux,按照官方说明执行: mkdir-p$HOME/dotnet......
  • Asp .Net Core 系列:集成 Ocelot+Consul实现网关、服务注册、服务发现
    什么是Ocelot?Ocelot是一个开源的ASP.NETCore微服务网关,它提供了API网关所需的所有功能,如路由、认证、限流、监控等。Ocelot是一个简单、灵活且功能强大的API网关,它可以与现有的服务集成,并帮助您保护、监控和扩展您的微服务。以下是Ocelot的一些主要功能:路由管理:Ocelot允许......
  • 处理跨域请求的API接口数据
     在Web开发中,跨域请求是一个常见的问题。由于浏览器的安全策略限制,JavaScript在发送HTTP请求时只能访问同源下的资源,即协议、域名、端口号都必须一致。然而,有时我们需要从不同域名下获取数据,这就涉及到了跨域请求的问题。为了解决这个问题,我们可以使用API接口来处理跨域请求。......
  • .net core ECDsa
    ECDsa(EllipticCurveDigitalSignatureAlgorithm)是一种基于椭圆曲线密码学的数字签名算法。在.NETCore中,System.Security.Cryptography.ECDsa类提供了对ECDsa算法的支持。ECDsa算法用于生成和验证数字签名,其主要用途包括:数字签名:使用私钥对数据进行签名,生成数字签名。这个......
  • dotnet efcore sqlite entity
    dotnet使用efcore读写sqlite数据库要使用EFCore读写SQLite数据库,您需要安装以下NuGet包:Microsoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Tools以下是一个示例代码,它演示了如何使用EFCore读写SQLite数据库:usingSystem;usingMicrosoft.EntityFramew......