我已经编写了一个WebAPI控制器,使用CORS进行跨域AJAX调用以获取数据。在我的本地环境中,通过HTTP协议一切正常。但是当我将代码推广到我们的预生产环境时(使用HTTPS协议),则OPTIONS请求失败,并显示以下错误提示:请求资源缺少“Access-Control-Allow-Origin”头信息。
经过研究,发现在请求期间出现错误时,无论错误原因如何,都会显示“Access-Control-Allow-Origin”错误。这是为了安全考虑,无法找到实际错误所在。
如我之前所说,使用HTTP协议时一切正常,但是使用HTTPS协议时,从不同域名访问时OPTIONS方法甚至没有被命中。下面是我WebAPI控制器中的OPTIONS方法:
经过研究,发现在请求期间出现错误时,无论错误原因如何,都会显示“Access-Control-Allow-Origin”错误。这是为了安全考虑,无法找到实际错误所在。
如我之前所说,使用HTTP协议时一切正常,但是使用HTTPS协议时,从不同域名访问时OPTIONS方法甚至没有被命中。下面是我WebAPI控制器中的OPTIONS方法:
[AcceptVerbs("OPTIONS")]
public HttpResponseMessage Options()
{
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Headers.Add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept");
resp.Headers.Add("Access-Control-Allow-Origin", ConfigurationManager.AppSettings["MSOContent"]);
resp.Headers.Add("Access-Control-Allow-Credentials", "true");
return resp;
}
HTTPS协议中可能存在某些问题,导致请求被阻塞。非常感谢您的帮助。