首页 > 解决方案 > Access-Control-Allow-Origin' 标头包含多个值

问题描述

运行网站时出现以下错误:

加载 http://localhost:54721/api/Auth/GetMenuItemsByRoleId/null 失败:“Access-Control-Allow-Origin”标头包含多个值“ http://localhost:4200 ,*”,但只允许一个. 因此不允许访问源“ http://localhost:4200 ”

为了解决这个问题,我在每个控制器中添加了以下代码,效果很好。

  [EnableCors("http://localhost:54721/", "*", "*")]

所以代码会变成这样:

在此处输入图像描述

但是该修复适用于每个控制器,应该避免这种情况。

有没有更好的解决方法,我可以在一个地方做,比如 web.config?

我的startup.cs如下:

public partial class Startup
    {
        public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }

        public void Configuration(IAppBuilder app)
        {
            HttpConfiguration httpconfig = new HttpConfiguration();


            WebApiConfig.Register(httpconfig);
            //enable cors origin requests
            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
            //app.
            ConfigureOAuth(app);

        }

        public void ConfigureOAuth(IAppBuilder app)
        {
            double timeout = Convert.ToDouble(ConfigurationManager.AppSettings["Timeout"].ToString());
            OAuthAuthorizationServerOptions OAuthserverOptions = new OAuthAuthorizationServerOptions()
            {
                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(10),
                Provider = new SimpleAuthorizationServerProvider()
            };

            //Token generation
            app.UseOAuthAuthorizationServer(OAuthserverOptions);
            app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
        }

标签: angulartypescriptasp.net-web-apigetcross-domain

解决方案


是的,有,你应该那样使用它。

创建一个配置类,如本例所示

无论如何,您的 cors 配置现在都不正确。您必须允许http://localhost:4200,而不是您的 api 的 url http://localhost:54721


推荐阅读