CORS的问题

时间:2016-04-21 11:41:34

标签: c# asp.net-mvc asp.net-web-api2

我正在设计一个带有MVC.NET的WebApi,供AngularJS前端使用。但是当用户尝试注册时,我在CORS方面遇到了一些问题。

所以在我的Web.Config中我有以下内容: -

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE, TOKEN" />
  </customHeaders>
</httpProtocol>

适用于登录屏幕,即用户正确登录系统。但是,当我尝试注册新用户时,我收到以下错误: -

XMLHttpRequest无法加载http://localhost:45668//api/Account//Register。预检的响应具有无效的HTTP状态代码404

所以在WebConfigApi.cs中,我包含以下代码: -

    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services
        // Configure Web API to use only bearer token authentication.
        var cors = new EnableCorsAttribute("http://localhost", "*", "*");
        config.EnableCors(cors);

        config.SuppressDefaultHostAuthentication();
        config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

注册用户时会引发以下错误: -

XMLHttpRequest无法加载http://localhost:45668//api/Account//Register。对预检请求的响应未通过访问控制检查:“访问控制 - 允许 - 来源”&#39;标头包含多个值&#39; http://localhost,*&#39;,但只允许一个。起源&#39; http://localhost&#39;因此不允许访问。

如果我删除web.config CustomHeaders,注册工作正常,但登录会引发CORS错误。

如何进行此操作并进行一次集中式CORS身份验证?

感谢您的帮助和时间!

1 个答案:

答案 0 :(得分:0)

  

无需在Web配置中设置自定义标头。你可以启用   CORS通过以下代码。

[EnableCors(origins: "http://localhost:45668//api/Account//Register", headers: "*", methods: "*")]