HTTPS下的CORS OPTIONS请求失败

3
我已经编写了一个WebAPI控制器,使用CORS进行跨域AJAX调用以获取数据。在我的本地环境中,通过HTTP协议一切正常。但是当我将代码推广到我们的预生产环境时(使用HTTPS协议),则OPTIONS请求失败,并显示以下错误提示:请求资源缺少“Access-Control-Allow-Origin”头信息。
经过研究,发现在请求期间出现错误时,无论错误原因如何,都会显示“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协议中可能存在某些问题,导致请求被阻塞。非常感谢您的帮助。

1个回答

2

如果它是通过HTTP工作的,那么问题很可能是你的浏览器处理了一个不信任的 SSL 证书并未被接受。对于此问题,控制台错误信息与“Origin”CORS错误完全相同。

访问https://youdomain,看看是否出现以下内容:

Untrusted

如果是这样,请添加异常情况,现在你的浏览器将使用你现在信任的证书愉快地调用该域。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接