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