【问题标题】:Angular 8 .NET Core 3.0.CORS error in some requests but not others某些请求中的 Angular 8 .NET Core 3.0.CORS 错误,但其他请求中没有
【发布时间】:2020-03-14 13:52:24
【问题描述】:

我正在开发一个网站(Angular 8 .NET Core 3.0),它需要一个 url 并尝试从页面中获取 og 标签。我提到了stackoverflow上的第一个答案

Startup.cs

--ConfigureServices    
services.AddCors(o => o.AddPolicy("CORSPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));
--Configure
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseCors("CORSPolicy");
        app.UseStaticFiles();
        if (!env.IsDevelopment())
        {
            app.UseSpaStaticFiles();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action=Index}/{id?}");
        });

        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "ClientApp";

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

现在我使用以下调用发出获取请求。

this.httpCli.get(this.URL, { headers: headers }).subscribe(result => {
        console.log(result);
    }, error => {
            console.error(error.text);
            console.error(error);
    });

我还是明白了

被 CORS 政策阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

对于一些网址。因为输出是 HTML,所以我得到 HttpErrorResponse,但状态正常,错误文本包含网页源。 我需要 HTML 源代码从 .

中提取 og 元标记

如何解决这两个问题?

【问题讨论】:

  • 能否更新问题,使其在 startup.cs 中包含 cors 配置?
  • 添加了代码。谢谢
  • 您也应该分享您的管道配置。管道的顺序至关重要。所以在其他中间件之前配置 CORS 很重要。您也可以尝试使用 EnableCorse 属性修改您的方法。
  • 我已经更新了问题。我也确实将 EnableCors 添加到我的控制器中

标签: angular asp.net-core-webapi


【解决方案1】:

您正在从端点获取 html 作为响应。但它应该是 json 响应。所以大多数情况下,您从服务器收到错误响应为 html。首先检查这个网址在邮递员或类似的地方是否正确。

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 2021-06-07
    • 1970-01-01
    • 2022-01-06
    • 2019-03-10
    • 2019-10-12
    • 1970-01-01
    • 2020-12-20
    • 2015-08-10
    相关资源
    最近更新 更多