Access-Control-Allow-Origin'标头包含多个值

时间:2018-08-01 11:53:07

标签: angular typescript asp.net-web-api get cross-domain

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

  

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

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

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

所以代码将变成这样:

enter image description here

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

是否有更好的解决方法,例如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());
        }

1 个答案:

答案 0 :(得分:0)

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

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

您的cors配置现在仍然不正确。您必须允许http://localhost:4200,而不是api http://localhost:54721的网址。