【问题标题】:CORS issue using Dot Net Framwork 4.5.2 with Angular 6使用带有 Angular 6 的 Dot Net Framework 4.5.2 的 CORS 问题
【发布时间】:2021-08-03 14:26:15
【问题描述】:

我在前端使用 DOT NET FRAMEWORK 4.5.2 和 Angular 6 制作的应用程序遇到 CORS 问题 这是我尝试过的。

 public static void Register(HttpConfiguration config)
 {
      // Web API configuration and services
      //EnableCorsAttribute cors = new EnableCorsAttribute("http://localhost:4200", "*", "GET,POST");
      config.EnableCors();
    
      // Web API routes
 }

我也尝试添加我的本地主机地址。它不起作用。 我也添加了一个 CorsPolicy,但也没有用。

    public class MyApiCorsPolicy : Attribute, ICorsPolicyProvider
    {
        private System.Web.Cors.CorsPolicy _policy;

        public MyApiCorsPolicy()
        {
            // Create a CORS policy.
            _policy = new System.Web.Cors.CorsPolicy
            {
                AllowAnyMethod = true,
                AllowAnyHeader = true,
                SupportsCredentials = true
            };
        }

        public Task<System.Web.Cors.CorsPolicy> GetCorsPolicyAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            // Add the Request origin to the response.
            _policy.Origins.Add(request.GetCorsRequestContext().Origin);
            return Task.FromResult<System.Web.Cors.CorsPolicy>(_policy);
        }

上面这段代码是WebApiConfig.cs

这是 StartUp.cs

public void Configuration(IAppBuilder app)
{
    app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); ConfigureAuth(app);
    ConfigureAuth(app);
}

Image is also attached

【问题讨论】:

  • IServiceCollection 需要外部 Nuget 包。您是否在 Framework 4.5.2 版本中尝试过? @alterfox

标签: c# .net angular angular6


【解决方案1】:

您需要在您的 startup.cs 文件中进行两项更改。第一个是在“ConfigureServices”方法中:

public void ConfigureServices(IServiceCollection services)
{
    //.....
        services.AddCors(options =>
        {
            options.AddPolicy("MyCorsSettings", builder =>
                builder.WithOrigins(MySettings.CorsAllowedDomains.ToArray())
                    .AllowAnyHeader()
                    .WithExposedHeaders("Content-Disposition")
                    .AllowAnyMethod());
        });
    //.....
}

请注意,在上面的代码中,MySettings.CorsAllowedDomains 只是从 appSettings 加载的允许域(即“https://www.example.com”)的字符串数组。

第二个改动是在“Configure”中,需要传入相同的引用名(即“MyCorsSettings”)

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ....
                app.UseCors("MyCorsSettings");
    ....
}

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 2019-06-04
    • 2017-09-06
    • 2021-11-09
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2019-03-03
    相关资源
    最近更新 更多