问题描述
我有一个 Azure 存储帐户(经典),我通过门户启用了 CORS:
现在我有一个 Flutter Web 应用程序 (PWA),它需要从这个存储中获取一些图像,但它会出现 CORS 错误。
我还尝试了一个带有简单 jquery ajax 调用的测试网页,但我遇到了同样的错误。 这是jquery代码:
$.ajax({
url: 'https://xxxx.blob.core.windows.net/test.jpg',type: 'get',success: function(data,status) {
console.log("Status: "+status+"\nData: "+data);
},error: function (result) {
console.log(result);
}
});
错误信息是:
从源“https://zzz.azurewebsites.net”访问“https://xxxx.blob.core.windows.net/test.jpg”的 XMLHttpRequest 已被 CORS 政策阻止:没有“访问-请求的资源上存在 Control-Allow-Origin' 标头。
如何添加响应头:access-control-allow-origin: *
谢谢。
解决方法
如 chat
中所述,您的 CORS 配置非常好。您遇到的问题是因为浏览器缓存了 CORS 设置。我们发现了两件事:
-
CORS 设置最大年龄设置为非常高的值(86400 秒),这会使浏览器缓存 CORS 设置的时间更长。删除 CORS 设置并使用较低的最大年龄值重新创建它以及删除浏览器缓存将解决此问题。
-
在第二个浏览器中尝试 AJAX 请求总是有帮助的,以防第一个浏览器缓存了 CORS 设置。