ASP.NET Core MVC Web应用程序中的Azure AD导致JavaScript请求的CORB

问题描述 投票:1回答:1

将Azure AD集成到ASP.NET Core MVC Web应用程序会导致对JavaScript前端向ASP.NET控制器发出的请求进行跨源读取阻止。

我正在编写一个ASP.NET核心MVC应用程序,要求用户使用Microsoft工作帐户登录。这有效。我将以下代码添加到Startup.cs:

services.AddAuthentication(sharedOptions =>
{
    sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    sharedOptions.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddAzureAd(options => Configuration.Bind("AzureAd", options))
.AddCookie(options =>
{
    options.LoginPath = "/Account/SignIn/";
    options.AccessDeniedPath = "/Account/AccessDenied/";
});

我还在为应用程序用户界面使用Telerik UI小部件。因此,我有多个地方使用JavaScript向ASP.NET控制器发出请求。例如:

function onEvent(e) {

    $.post("Controller/Foo", function (data) {
        ...
    });
}

当我使用IIS Express在本地运行和调试时,这很有用但是当我将应用程序部署到运行IIS的服务器时,我开始在我的浏览器开发工具中收到有关跨源读取阻塞的警告,而我的javascript函数都没有发出请求我的ASP.NET控制器接收数据。

以下是警告的屏幕截图:

enter image description here

如果有人碰巧知道如何处理这个问题,我将非常感激;我是所有这一切的新手,我不知道从哪个特定问题开始。

我目前的想法是要么我需要弄清楚如何在javascript中处理'Access-Control-Allow-Origin'标头,或者在Azure中需要做些什么。

我做的第一件事是在我的应用程序中启用CORS,但这只允许其他域从我的应用程序发出跨源请求,这不是这里发生的事情。

asp.net-core-mvc azure-active-directory iis-8 asp.net-core-2.1 cross-origin-read-blocking
1个回答
0
投票

如果有人在Chrome和dotnet核心中遇到CORB这个问题请注意,在我的情况下,我使用的是ResponseCache属性。在第一个非缓存的请求上它起作用,后续的请求因CORB错误而失败。

删除属性后,错误就消失了。

这并不能解决问题,但可以就问题的位置给出一个方向。

因为不再需要响应缓存,所以我没有打扰它。

以下是违规代码

[ResponseCache(Duration = 15, Location = ResponseCacheLocation.Any, VaryByQueryKeys = new[] {"key", "type", "identifier", "app"})]
© www.soinside.com 2019 - 2024. All rights reserved.