我有一个 REST 服务(作为 Azure 函数实现),在域 A 上的 HTTPS 上运行。
我有一个网站,在域 B 上通过 HTTPS 运行。
我已为 cors 指定通配符 *。
在网站上使用 jQuery,我将 Ajax 请求发送到其余服务。这有效,我可以看到由 OPTIONS
预检的 GET
请求。
当我开发休息服务时,我想在本地主机域上托管该服务,在 HTTP 上运行。这似乎不起作用。
我必须启用混合内容,但浏览器 (Firefox) 似乎没有发送或预检我的请求 - 网络流量为空。看来我的请求未能通过 CORS 请求。
这会出现在 Firefox 控制台中。
16:42:56.550 Loading mixed (insecure) active content "http://locahost:7071/api/test/get?message=get+hello+world!" on a secure page[Learn More] ajax.ts:153:23
16:42:56.558 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://locahost:7071/api/test/get?message=get+hello+world!. (Reason: CORS request did not succeed).
我可以通过将本地 URL 设置为 //locahost
来避免混合内容错误,但这仍然会导致 CORS 失败。
发生这种情况是因为我尝试从 HTTPS 域到 HTTP 本地主机进行 CORS 操作吗?
最佳答案
此页面显示详细原因:混合内容默认被阻止。 https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content/How_to_fix_website_with_mixed_content
如果您没有设置允许的域列表,则还必须启用本地https,不仅Firefox,而且Chrome和IE也会阻止那些从https到http的请求。 顺便说一句,您不能在本地主机中使用自分配的证书,它也会被阻止并出现另一个错误。
关于javascript - 为什么我从 HTTPS 域到 HTTP 本地主机的请求会失败 CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51269439/