BLAZOR、ASP CORE 5 和 Azure APP:已被 CORS 策略阻止
BLAZOR, ASPCORE 5 and AzureAPP: has been blocked by CORS policy
我有一个问题,我不知道如何解决。我将 blazor 与 AzureAD 和 azure 服务一起使用(我可以登录),但问题是访问 azureBD 中的数据库数据。我不知道为什么重定向。我尝试了很多代码 :( 也许我遗漏了什么??
错误:
从来源 'https://rims.rafint.com' 在 'https://login.microsoftonline.com/12acee71-6c99-48a3-9ff7-02fc9a24288a/oauth2/v2.0/authorize?client_id=5153b62a-311b-4c00-a0d0-at-ver=6.7.1.0'(从 'https://rims.rafint.com/api/TblTeamStdRoles' 重定向)获取的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-Origin' header 出现在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为 'no-cors' 以在禁用 CORS 的情况下获取资源。
无法加载资源:net::ERR_FAILED
startup.cs:
services.AddDbContext<RIMS_Copy24apr21Context>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DbContext")));
services.AddTransient <Rafint_RIMSService> ();
services.AddHttpClient();
services.AddOptions();
string[] initialScopes = Configuration.GetValue<string>(
"Rafint-RIMS:ScopeForAccessToken")?.Split(' ');
services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddInMemoryTokenCaches();
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
builder.WithOrigins("https://rims.rafint.com" , "https://rims.rafint.com/api/TblTeamStdRoles",
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read")
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddControllersWithViews();
services.AddRazorPages().AddMvcOptions(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
Problem
Program.CS
我需要访问数据库!!
据我所知,问题出在下面的代码段,
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
builder.WithOrigins("https://rims.rafint.com" , "[https://rims.rafint.com/api/TblTeamStdRoles"](https://rims.rafint.com/api/TblTeamStdRoles%22 "https://rims.rafint.com/api/tblteamstdroles%22"),
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read")
.AllowAnyMethod()
.AllowAnyHeader());
});
要解决此问题,请尝试以下解决方法、
- 尝试为
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read"
添加 https://
- 否则,请尝试在 [ 中仅包含两个链接(“https://rims.rafint.com”、“https://rims.rafint.com/api/TblTeamStdRoles”) =14=]
- 如果仍然出现,请使用 AllowAnyOrigin,如下所示,
Services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
如果对您有帮助,请在下方参考资料中查找。
参考文献:
, Ref2 , Ref3
我有一个问题,我不知道如何解决。我将 blazor 与 AzureAD 和 azure 服务一起使用(我可以登录),但问题是访问 azureBD 中的数据库数据。我不知道为什么重定向。我尝试了很多代码 :( 也许我遗漏了什么??
错误:
从来源 'https://rims.rafint.com' 在 'https://login.microsoftonline.com/12acee71-6c99-48a3-9ff7-02fc9a24288a/oauth2/v2.0/authorize?client_id=5153b62a-311b-4c00-a0d0-at-ver=6.7.1.0'(从 'https://rims.rafint.com/api/TblTeamStdRoles' 重定向)获取的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-Origin' header 出现在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为 'no-cors' 以在禁用 CORS 的情况下获取资源。
无法加载资源:net::ERR_FAILED
startup.cs:
services.AddDbContext<RIMS_Copy24apr21Context>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DbContext")));
services.AddTransient <Rafint_RIMSService> ();
services.AddHttpClient();
services.AddOptions();
string[] initialScopes = Configuration.GetValue<string>(
"Rafint-RIMS:ScopeForAccessToken")?.Split(' ');
services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddInMemoryTokenCaches();
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
builder.WithOrigins("https://rims.rafint.com" , "https://rims.rafint.com/api/TblTeamStdRoles",
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read")
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddControllersWithViews();
services.AddRazorPages().AddMvcOptions(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
Problem
Program.CS 我需要访问数据库!!
据我所知,问题出在下面的代码段,
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
builder.WithOrigins("https://rims.rafint.com" , "[https://rims.rafint.com/api/TblTeamStdRoles"](https://rims.rafint.com/api/TblTeamStdRoles%22 "https://rims.rafint.com/api/tblteamstdroles%22"),
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read")
.AllowAnyMethod()
.AllowAnyHeader());
});
要解决此问题,请尝试以下解决方法、
- 尝试为
"api://5153b62a-311b-4c00-a0d0-a896b0cdc908/TblTeamStdRoles.read"
添加 - 否则,请尝试在 [ 中仅包含两个链接(“https://rims.rafint.com”、“https://rims.rafint.com/api/TblTeamStdRoles”) =14=]
- 如果仍然出现,请使用 AllowAnyOrigin,如下所示,
https://
Services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
如果对您有帮助,请在下方参考资料中查找。
参考文献: