当前位置: 首页 > 知识库问答 >
问题:

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

孙项禹
2023-03-14

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

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

在我的创业公司。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 }
            );            
        }
    }

共有2个答案

长孙正卿
2023-03-14

为了解决您的CORS问题,您可以在web.config文件中执行以下操作:

在<代码>下

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Credentials" value="true"/>
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, OPTIONS" />
    </customHeaders>
</httpProtocol>
闻人宜
2023-03-14

我不知道为什么“AllowAnyOrigin()”不起作用,但我用这段代码绕过了这个问题:

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

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

 类似资料:
  • 我有一个flask socketio服务器,运行在带有nginx的ubuntu上。我有一个客户端调用服务器。当我尝试呼叫服务器时,收到以下错误: 这是我对烧瓶的初始化: ... 这是我当前在nginx中的配置: 来自客户端对服务器的请求如下所示: 我尝试过: -添加允许CORS到位置/仅,以及两者-在烧瓶应用程序中删除/添加allow CORS origin。 有人能帮忙吗?

  • 当我使用HTML2Canvas评估图像时,我得到了这个错误。 CORS策略阻止从来源“http://localhost:8080”访问位于“http://testdomain.com/storage/images/products/user_front.png”的映像:请求的资源上没有“Access-Control-Allow-Origin”标头。 下面是我的cors配置。 有人能帮我吗?

  • 我有一个在Node开发的API。JS,打字稿听localhost:3001我有一个Angular的前端应用程序,打字稿听localhost:4200 我正在尝试使用ngx-image-cropper上传图像文件,将其转换为base 64,从前端到API。 当补丁(更新)http请求发送到API时,我得到: 访问位于'http://localhost:3001/member/10'从原点'http:

  • ... 我在Java Spring Boot后端中使用了以下符号: 这是一个错误,我得到:

  • 请不要将此标记为重复。我已经阅读了关于堆栈溢出的每一个相关答案,并且还没有找到这个问题的明确解决方案。 我现在正在使用带有axios的vue服务器来尝试从https://coinmarketcap.com.获取数据并显示它。问题是,我在chrome控制台上收到一条错误消息: 从https://api.coinmarketcap.com/v1/ticker到https://api.coinmarke

  • 有一个应用程序在角7也有一个. net web api解决方案,当我调用一个动作CORS问题发生,错误如下 CORS策略阻止从http://localhost:57467/UserDetails/GetUserDetailshttp://localhost:4200访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。 我试图使用Web ap