我编写了一个WebAPI控制器,我正在使用CORS通过跨域AJAX调用来请求数据作为GET。在我的本地环境中,通过HTTP,一切都按预期工作。当我将代码提升到通过HTTPS的预生产环境时,OPTIONS请求将失败并显示以下内容: 请求的资源上没有“Access-Control-Allow-Origin”标头
在进行研究时,我发现在请求期间发生错误时,将显示Access-Control-Allow-Origin错误。无论错误是什么。这是为了安全,所以我找不到实际的错误。
正如我之前所说的,所有内容都可以在HTTP上完美运行,但在HTTPS中无效。我已经设置了在WebAPI控制器上的日志记录,并且当通过跨域的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协议中必定存在以某种形式终止请求的内容。任何帮助将不胜感激。
答案 0 :(得分:0)
如果它在HTTP上运行,则问题很可能是您的浏览器正在处理不受信任且尚未接受的SSL证书。此问题的控制台错误消息与“Origin”CORS错误完全相同。
浏览到https://youdomain,看看是否弹出以下内容:
如果是这样,请添加例外,现在您的浏览器将很乐意使用您现在可信赖的证书拨打该域名。