有时候我们在做web前端和后台联调的时候会发现前端无法访问后台。因为现在的前端开发大多数都是大前端开发模式,所有前端访问asp.net core后台属于跨域请求。现在我们来看看怎么开启跨域访问。
asp.net core的框架提供了高扩展性,高灵活性,开启跨域请求也比较简单,主要是针对以下位置做修改:
- 服务中注册Http访问策略
- 引入app.cors
- 控制器中开启跨域访问
服务中注册Http访问策略
找到startup.cs
文件,并在ConfigureServices
方法中添加以下代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("*")
.AllowAnyHeader()
.AllowAnyMethod().AllowAnyOrigin();
});
});
//省略...
}
引入app.cors
找到startup.cs
文件,并在Configure
方法中添加以下代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
//app.UseCors 核心代码 start
app.UseCors();
//app.UseCors 核心代码 end
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
这里要特别注意,app.UseCors
必须放在app.UseRouting()
和app.UseAuthorization()
中间。
控制器中开启跨域访问
找到对应的控制器,添加特性标签EnableCors
。
[EnableCors]
[ApiController]
[Route("[controller]")]
public class LoginController : ControllerBase
{
private readonly ILogger<LoginController> _logger;
public LoginController(ILogger<LoginController> logger)
{
_logger = logger;
}
[HttpGet]
public bool Get()
{
return true;
}
}
详情请阅读微软官方文档,点我跳转!
本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/asp.net-core-%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF%E5%85%81%E8%AE%B8%E8%B7%A8%E5%9F%9F%E8%AE%BF%E9%97%AE.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。