我正在尝试为CORS配置Web.API。 GET方法可以成功运行,但由于某些原因不能PUT。
无法加载https://localhost:44399/api/Person/032342: 对预检请求的响应未通过访问控制检查:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。因此,不允许原点“ https://localhost:44300” 访问。响应的HTTP状态代码为404。
我在WebApiConfig.cs中有以下代码
config.MessageHandlers.Add(new CorsHandler());
如果我添加行
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
我将收到以下错误
无法加载 https://localhost:44399/api/Person/032342: “ Access-Control-Allow-Origin”标头包含多个值“ *”, https://localhost:44300',但只允许一个。起源 因此,不允许访问“ https://localhost:44300”。
我尝试遵循此处的建议,但没有成功:
The 'Access-Control-Allow-Origin' header contains multiple values
您知道为什么它抱怨多个值吗?
我还尝试将以下内容包含在Global.asax.cs中,但没有成功。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, HEAD,OPTIONS,POST,PUT");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, useXDomain");
HttpContext.Current.Response.End();
//HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
//HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
}
}