【发布时间】:2018-07-11 18:56:43
【问题描述】:
我有一个休息服务(作为 Azure 函数实现),在 HTTPS 上运行,在域 A 上。
我有一个网站,在域 B 上运行 HTTPS。
我为 cors 指定了通配符 *。
在网站上使用 jQuery,我将 Ajax 请求发送到其余服务。这可行,我可以看到我的 GET 请求由 OPTIONS 预检。
当我开发我的休息服务时,我想在本地托管服务,在 HTTP 上运行,在 localhost 域上。这似乎不起作用。
我必须启用混合内容,但浏览器 (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 localhost 执行 CORS 吗?
【问题讨论】:
-
如果您将
http://硬编码到您的 ajax 网址中,请尝试将其更改为//。如果您执行以//开头的ajax 请求,它将使用页面首次加载时使用的任何协议。这样您就可以避免使用与页面不同的协议。 -
您的
local.settings.json文件中有"CORS": "*"属性吗? -
@MarkC。是的,我也尝试过提供
--cors *作为应用程序参数。 -
@Taplar,好主意,但结果相似。浏览器预检了对
https://的请求,我的服务没有响应,所以 CORS 仍然失败。 -
它可能仍然无法通过 CORS,但这应该可以解决您的混合活动内容错误。
标签: javascript ajax rest cors azure-functions