.NET 6 CORS 策略在客户端 CORS 上被阻止

2023-12-13

我的应用程序的客户端是.NET6,服务器端Web API是.NET 4.8。当尝试访问服务器端时,浏览器控制台中会产生以下错误:

从源“https://localhost:34564”获取“https://localhost:12345/api/controller/method”的访问已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头关于所请求的资源。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

在我的startup.cs中,我有以下代码:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest);

    // In production, the React files will be served from this directory
    services.AddSpaStaticFiles(configuration =>
    {
        configuration.RootPath = "ClientApp/build";
    });
    services.AddCors(options =>
    {
        options.AddPolicy("AllowSpecificOrigin",
            builder => builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader()
        );

    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();               
    }
    else
    {  
        app.UseHsts();
    }
    app.UseCors("AllowSpecificOrigin");
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseSpaStaticFiles();
    app.UseRouting();
    app.UseSpa(spa =>
    {
        spa.Options.SourcePath = "ClientApp";

        if (env.IsDevelopment())
        {
            spa.UseReactDevelopmentServer(npmScript: "start");
        }
    });
}

“WebAPIConfig.cs”中的 CORS 设置

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            var cors = new EnableCorsAttribute("*", "*", "*");
            config.EnableCors(cors);
            config.Filters.Add(new AuthorizationAttribute());
            config.MapHttpAttributeRoutes();
            // Web API routes
            GlobalConfiguration.Configuration.Formatters.Add(new FormMultipartEncodedMediaTypeFormatter());
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}/{other}",
                defaults: new { id = RouteParameter.Optional, other = RouteParameter.Optional }
            );            
        }
    }

我不确定为什么“AllowAnyOrigin()”不起作用,但我设法用以下代码绕过了这个问题:

// global cors policy
app.UseCors(x => x
    .AllowAnyMethod()
    .AllowAnyHeader()
    .SetIsOriginAllowed(origin => true) // allow any origin 
    .AllowCredentials());

当然,这需要位于您的 API 项目代码中,而不是前端代码中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 6 CORS 策略在客户端 CORS 上被阻止 的相关文章

随机推荐

  • Three.js 中同一网格面上的多个透明纹理

    是否可以在 Three js 中将多个纹理叠加在同一个面上 以便在 webGL 中通过 GPU 加速完成 alpha 混合 这些纹理 或应该 应用于同一个面 以便底部纹理 纹理 1 没有 Alpha 通道 并且上面的纹理以类似于下图示例中的
  • if 语句错误,需要标量逻辑表达式

    在子例程中 我尝试创建一个语句 但是只有当我直接输入数字时它才会起作用 一旦我用变量替换数字 它就会给出错误 Error IF clause requires a scalar LOGICAL expression 在此示例中 var 是
  • IL 级别的表达式主体语法与 Getter 语法有什么区别?

    我想稍微了解一下 IL 代码 正如您所看到的 表达式 bodied 的代码比 GetOld 的代码少 是否进行了一些优化并意味着表达式主体语法性能更高 或者这并不重要 namespace DatabaseModules public cla
  • 如何防止同一用户在不同电脑上同时登录

    我们构建了一个内部网应用程序 用户必须登录才能执行某些任务 我们必须确保没有 应用程序用户 同时登录多次 所以我现在所做的就是将当前的 asp net 会话 ID 存储在数据库中 然后在每个页面加载时比较它们是否相同 当用户登录时 会话 I
  • 当数组大小为一百万时程序崩溃[重复]

    这个问题在这里已经有答案了 可能的重复 大数组在 C 中给出分段错误 我正在尝试将合并排序和快速排序与不同的输入大小 如 10 000 100 000 和 1 000 000 进行比较 然而 当我给出一百万个输入大小时 程序崩溃了 我不知道
  • 获取屏幕当前滤色片的颜色

    以下代码将屏幕的滤色器设置为特定颜色 我怎样才能获取屏幕的颜色 DllImport GDI32 dll private unsafe static extern bool SetDeviceGammaRamp IntPtr hdc void
  • Windows批处理脚本-在for循环内设置变量

    也许我没有清楚地表达我的问题 这是我所做的实际代码 echo off set p keywords Enter keywords to search dir b dat gt filelist txt for f delims f in f
  • 匹配两个seaborn图的图例颜色

    我有这三个子图 我需要在顶部匹配下方的两个子图的图例中设置大陆的颜色 即欧洲 蓝色 亚洲 红色 等等 有没有办法做到这一点 我正在使用 Python seaborn 和 Matplotlib 这是我的代码和结果图 fig plt figur
  • 在 Python 中覆盖现有 Excel 文件时图形丢失

    我正在使用 openpyxl 写入现有文件 一切正常 但是 将数据保存到文件后 图表就会消失 据我了解 Openpyxl 目前仅支持在工作表中创建图表 现有工作簿中的图表将丢失 Python 中是否有任何替代库可以实现此目的 我只想提供一些
  • 如何从 F# 中的构造函数调用方法

    我知道这个问题 但提问者似乎对另一个问题的答案感到满意 如何重载构造函数 我有一个类 它充当可变类的高级记忆器 这样我就可以将其视为从外部不可变的 type Wrapper args let tool new MutableTool too
  • 我可以让 Memcached 在 Windows (x64) 64 位环境上运行吗?

    有人知道吗IF WHEN or HOW我可以得到内存缓存在 Windows 64 位环境上运行 我正在设置一个新的托管解决方案 并且更愿意运行 64 位操作系统 并且由于它是带有 SQL Server DB 的 ASP Net MVC 解决
  • \a(警报和蜂鸣声)转义序列字符在 C 语言中不起作用

    我不知道为什么 a不管用 我的代码正在运行并显示在终端中 我的代码 include
  • VS 2017安装失败

    我在 Windows 7 上安装 VS2017 一段时间后我收到错误 MSI C ProgramData Microsoft VisualStudio Packages Microsoft VisualStudio MinShell Msi
  • 就效率而言,全局 CSS 变量与局部变量

    CSS 中的全局变量在内存或效率方面是否比局部 CSS 变量低 所以基本上我的问题是 与在特定选择器的代码块中声明并相对于选择器本地作用域的变量相比 在全局范围内声明并且可以在CSS中的任何位置访问的变量是否有任何好处 当谈论全球范围时 我
  • Mongodb条件查询

    作为 mongo 的新手 陷入了条件查询 我想根据 3 个条件 名字 姓氏和电子邮件 ID 执行搜索 当所有字段都存在时 下面的查询工作完美 db students find and first name Abc i last name X
  • CSS 样式未在 IE8 中加载

    我有一个非常奇怪的问题 IE8 中没有加载 CSS 样式 也许 IE7 也是如此 但无法检查 我的网站位于http www leavetrackapp com 我的主 CSS 文件如下 import url reset css import
  • ASP.NET 5 自定义错误页面未在 Azure 网站上呈现

    我有一个 ASP NET 5 网站 我想向其中添加自定义错误页面 我习惯在 web config 中添加条目 从 ASP NET 4 天开始 但我想在 ASP NET 5 中使用新方法 因此 我的 Startup cs 类中有以下内容 if
  • 如何在每页的基础上更改导航栏的背景图像?

    我一直在寻找一种方法来改变我的背景图像NavigationBar并控制我的外观NavigationBar当用户导航应用程序时 据我了解 更改背景图像的公认方法是 implementation UINavigationBar UINaviga
  • 包含 U+001A 的 XML 文档的编码

    我有一个 XML 文档 它是根据人们从各种地方复制 粘贴的一些内容生成的 尽管大多数是 Word 文档 它看起来像这样
  • .NET 6 CORS 策略在客户端 CORS 上被阻止

    我的应用程序的客户端是 NET6 服务器端Web API是 NET 4 8 当尝试访问服务器端时 浏览器控制台中会产生以下错误 从源 https localhost 34564 获取 https localhost 12345 api co