从源 xxxx 访问 XMLHttpRequest ' 被 CORS 策略阻止:对预检的响应。预检请求不允许重定向

Posted

技术标签:

【中文标题】从源 xxxx 访问 XMLHttpRequest \' 被 CORS 策略阻止:对预检的响应。预检请求不允许重定向【英文标题】:Access to XMLHttpRequest ' from origin xxxx blocked by CORS policy: Response to preflight. Redirect is not allowed for a preflight request从源 xxxx 访问 XMLHttpRequest ' 被 CORS 策略阻止:对预检的响应。预检请求不允许重定向 【发布时间】:2019-07-02 03:45:46 【问题描述】:

我正在使用 Azure 地图,对 FF 或 Edge 没有任何问题。但是 Chrome 在尝试显示地图时给了我以下错误:

在 atlas.microsoft.com/map/tile/pbf?&view=Unified&language=NGT&api-version=1.0&layer=basic&style=main&zoom=16&x=12586&y=26496&subscription-key=xxxx' 从 mysite.org 访问 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向。

我已将 mysite.org 添加到 Azure 中的允许来源。某些地图内容确实会显示,例如位置标记和地图样式选择器等。只有实际地图被阻止。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

CORS 错误在这里很可能是一个红鲱鱼。 发生的事情是您的请求由于某种原因收到来自服务器的重定向,因此被 CORS 阻止 这个特定的 URL 很可能不打算由 Ajax 使用,而是打算由浏览器直接呈现。例如,可能是服务器将您重定向到登录页面的身份验证问题,或者地图服务器可能只想重新格式化您的 URL。

无论如何,在浏览器中打开开发者工具,告诉它不要清除导航请求并尝试输入该 URL;您会看到在网络选项卡中发生了某种重定向然后您需要弄清楚如何避免这种重定向 - 或者,如果此 URL 类型不适用于 Ajax,请重新考虑您的设计。

我在这里写了一些关于 CORS 是如何工作的; https://www.lytzen.name/2016/02/20/playing-with-cors.html,这可能有帮助,也可能没有帮助。

【讨论】:

谢谢,我会看一下您的参考资料,并尝试您指示的浏览器步骤。但是,我所做的只是调用以下 URL:[link]atlas.microsoft.com/sdk/js/atlas.min.js?api-version=1。那里的某个地方正在发生重定向。 我在带有调试器的浏览器中打开了有问题的 URL,这就是我收到的内容:资源解释为文档,但使用 MIME 类型应用程序/vnd.mapbox-vector-tile 传输。不确定我对此有任何控制权。怎么办?谢谢 您是否在调试工具中打开了网络选项卡并告诉它在导航时不清除?您需要查看这些网络请求以及响应代码是什么。第一个可能是 302,这将是您的问题。

以上是关于从源 xxxx 访问 XMLHttpRequest ' 被 CORS 策略阻止:对预检的响应。预检请求不允许重定向的主要内容,如果未能解决你的问题,请参考以下文章

从源访问 XMLHttpRequest 已被 CORS 策略阻止

Nuxt Axios 访问 XMLHttpRequest 错误 - 不从源调用 .NET webAPi

CORS 策略已阻止从源对 X 的 XMLHttpRequest 的 CORS 访问

从源“http://localhost:4200”访问“”处的 XMLHttpRequest 已被 CORS 阻止。我无权访问服务器

Angular 和播放框架从源访问 XMLHttpRequest 已被 CORS 策略阻止

CORS 策略已阻止从源“null”访问 XMLHttpRequest:对预检请求的响应未通过访问控制 [重复]