部署到服务器时出现CORS问题

时间:2019-08-28 08:04:49

标签: .net angular cors asp.net-core-webapi

我在同一台服务器上部署了两个项目。其中一个是角度项目,另一个是.net CORE中的角度项目调用的API。 在本地,我没有这个问题,但是在服务器上,每次我调用API时,都会在浏览器控制台中收到此错误消息:

  

从原点>'http://myIPAdress:81/Configuration/CODE_CLIENT'开始对>'http://myIPAdress'处的XMLHttpRequest的访问已被CORS策略阻止:在所请求的资源上没有'Access-Control-> Allow-Origin'标头

我推断出问题来自.NET Core项目。我已经在StackoverFlow上尝试了建议的解决方案,但没有成功。 这是我在.net Core方面的代码:

public void ConfigureServices(IServiceCollection services)
    {

        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new 
CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
        });
        services.AddCors(options =>
        {
            options.AddPolicy("AllowSpecificOrigin",
                builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()
                .AllowAnyMethod());
        });

        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole();
        loggerFactory.AddDebug(LogLevel.Information);

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        // Shows UseCors with named policy.
        app.UseCors("AllowSpecificOrigin");

        app.UseStaticFiles();
        app.UseAuthentication();


        app.UseMvcWithDefaultRoute();
    }

在Angular端,我这样调用我的API:

getConf(code : string){
    var url = "http://MyIPAdress/Configuration";
    return this.http.get<any>(url +'/'+ code)
}

在本地,我通过API访问数据,但不在服务器上访问,有人知道为什么吗?

对不起,我的英语和我的代码我开始编程

编辑:我在服务器的IIS中添加了HTTP响应:Access-Control-Allow-Origin。现在我没有相同的错误,但是这个错误:

  

响应中“ Access-Control-Allow-Credentials”标头的值是“>”,当请求的凭据模式为“ include”时,该值必须为“ true”。 XMLHttpRequest发起的请求的>凭据模式由> withCredentials属性控制。

3 个答案:

答案 0 :(得分:0)

builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()中,也与http://localhost:80一起添加服务器IP地址

赞:

builder.WithOrigins("http://localhost:80","http://serverIPAddress.com");

答案 1 :(得分:0)

尝试不提供以下任何政策:

BETWEEN '24-JUN-19' AND '24-AUG-19'

答案 2 :(得分:0)

要解决初始错误,请移动'app.UseCors(“ AllowSpecificOrigin”);'到'app.UseMvcWithDefaultRoute();'之前以便读取

app.UseCors("AllowSpecificOrigin");
app.UseMvcWithDefaultRoute();

此后通过添加AllowCredentials();解决了收到的错误,因此CORS条目应为

    services.AddCors(options =>
    {
        options.AddPolicy("AllowSpecificOrigin",
            builder => builder.WithOrigins("http://localhost:80").AllowAnyHeader()
            .AllowAnyMethod()
            .AllowCredentials()
        );
    });