我正在设计一个带有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身份验证?
感谢您的帮助和时间!
答案 0 :(得分:0)
无需在Web配置中设置自定义标头。你可以启用 CORS通过以下代码。
[EnableCors(origins: "http://localhost:45668//api/Account//Register", headers: "*", methods: "*")]