我有一个问题,不知道如何解决。我使用blazor、AzureAD和azure Service(我可以登录(,但问题是访问azureBD中数据库的数据。我不知道为什么重定向。我尝试了很多代码:(也许我错过了什么??
错误:
访问"获取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'(来源'https://rims.rafint.com'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在"access control Allow Origin"标头。如果不透明响应满足您的需求,请将请求的模式设置为"无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");
});
问题
程序.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"quot;https://rims.rafint.com/api/TblTeamStdRoles"(在
builder.WithOrigins
中 - 如果仍然发生,请使用AllowAnyOrigin,如下所示
Services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
如果有帮助,请参阅以下参考资料。
参考文献:
参考1、参考2、参考3