首页
学习
活动
专区
圈层
工具
发布

CORS问题
EN

Stack Overflow用户
提问于 2016-04-21 11:41:33
回答 1查看 999关注 0票数 1

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

因此,在我的Web.Config中,我有以下内容:-

代码语言:javascript
复制
<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中,我包含以下代码:-

代码语言:javascript
复制
    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。对飞行前请求的响应不会通过访问控制检查:“访问-控制-允许-原产地”报头包含多个值'http://localhost,*',但只允许一个。因此,“http://localhost”源是不允许访问的。

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

我如何才能做到这一点,并拥有一个集中的CORS认证?

谢谢你的帮助和时间!

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 13:23:15

在web配置中不需要设置自定义标题。您可以通过以下代码启用CORS。

代码语言:javascript
复制
[EnableCors(origins: "http://localhost:45668//api/Account//Register", headers: "*", methods: "*")]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36768517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档