最近在创建自己的个人博客网站,中途遇到的一些问题,记录一下。
用的.net 5.0 webAPI 用到接口会有跨域问题。在网上百度的都是在StartUp类的ConfigureServices方法中添加如下代码:
services.AddCors(options =>
options.AddPolicy("cors",
p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
但是Cors配置不能同时启用 AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials()
否则报错 System.InvalidOperationException
HResult=0x80131509
Message=The CORS protocol does not allow specifying a wildcard (any) origin and credentials at the same time. Configure the CORS policy by listing individual origins if credentials needs to be supported.
Source=Microsoft.AspNetCore.Cors
所以修改成:
services.AddCors(options =>
{
options.AddPolicy("cors", builder =>
{
builder.WithMethods("GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS")
//.AllowCredentials()//指定处理cookie
.AllowAnyOrigin(); //允许任何来源的主机访问
});
});
在Startup.Configure中,添加配置
注意: app.UseCors(“cors”); 要写在app.UseAuthorization(); 后面,否则会报错。
app.UseRouting();
app.UseAuthorization();
app.UseAuthentication();
//配置Cors
app.UseCors("cors");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
这些配置完成就能解决跨域问题了,欢迎大家指出错误或评论区讨论问题