【问题标题】:"CORS header ‘Access-Control-Allow-Origin’ does not match", incorrect "Access-Control-Allow-Origin" in Response Header“CORS 标头‘Access-Control-Allow-Origin’不匹配”,响应标头中的“Access-Control-Allow-Origin”不正确
【发布时间】:2020-09-21 12:31:40
【问题描述】:

我们有一个托管在 IIS 上的多租户 Web 应用程序,带有两个标头(SiteA 和 SiteB)。该应用程序在客户端使用 Autodesk Forge Viewer。一切正常,直到上周开始发生这种情况: 使用 url "http://www.siteA.com" 浏览应用程序时,它工作正常。现在,如果我们在另一个选项卡中使用 url "http://www.siteB.com" 浏览相同的应用程序,则查看器不会加载,并且我们在调试中有两个错误:

跨域请求被阻止:同源策略不允许读取位于https://developer.api.autodesk.com/viewingservice/v1/viewers/6.2.3/lmvworker.min.js 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”与“http://www.siteA.com”不匹配)。

跨域请求被阻止:同源策略不允许读取位于https://developer.api.autodesk.com/viewingservice/v1/viewers/6.2.3/res/locales/en/allstrings.json 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”与“http://www.siteA.com”不匹配)。

正如错误所暗示的,尽管调用请求标头中的 Origin 是“http://www.siteB.com”,但响应标头中返回的“Access-Control-Allow-Origin”是“http://www.siteA.com”!

现在,如果其他人(或使用其他浏览器)我们做同样的事情,但以其他方式(首先是站点 B,然后是 A)我们的站点 B 工作正常,但站点 A 给出错误的响应标头。

有人遇到过这样的问题吗?这是任何可能的 Autodesk Forge CDN 服务器更新的 CDN 缓存问题吗? 任何能指导我正确方向的帮助将不胜感激。

谢谢

【问题讨论】:

  • 会不会是缓存过时造成的?还是中间有代理?听起来像是浏览器行为而不是我们的 CDN - 刚刚尝试了 https://developer.api.autodesk.com/viewingservice/v1/viewers/6.2.3/res/locales/en/allstrings.json 并且标题中的 Access-Control-Allow-Origin 是 *
  • 感谢您的评论。我怀疑它必须对浏览器做任何事情,原因如下:-尝试从不同的浏览器(Chrome和Firefox)访问两个站点相同的结果-使用不同的浏览器我尝试了不同的顺序(A然后B导致B不起作用)和另一个浏览器(B 然后 A 和 A 不起作用)
  • 我也试过从不同的网络访问A和B,内部和网络外部,相同的行为,所以它也不能是代理
  • 还有一件事:当您通过在浏览器中键入 url 来调用脚本时,它总是将 Access-Control-Allow-Origin 作为 *。原因是它不是从网站页面调用的,因此它没有来源......
  • 刚刚尝试使用查看器加载https://developer.api.autodesk.com/viewingservice/v1/viewers/6.2.3/res/locales/en/allstrings.json,但仍然将Access-Control-Allow-Origin 设置为* - 认为我们的服务器不会有不同的行为,因为它应该允许所有来源......如果问题仍然存在尝试设置一个代理来获取查看者的资产...查看示例here

标签: autodesk-forge autodesk-viewer


【解决方案1】:

我正在经历完全相同的行为。在我们的例子中,它是具有 2 个完全不同域的 2 个不同站点。

我们正在使用这些 url 来加载脚本和 CSS

https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css

我已经在最新的 Chrome / Firefox 中对其进行了测试,并且在两种浏览器中都出现了错误。

我做了什么:

  • 访问站点 A => 一切正常
  • 访问站点 B => 不工作
  • 在站点 B 上重置缓存 => 一切正常
  • 访问站点 A => 不工作

因此,从 CDN 加载脚本的第一个站点是“赢家”,该站点按预期工作。

我也通过访问:https://sample-collection.s3.amazonaws.com/advanced.html

对其进行了测试

之后我打开了我的开发网站并得到了这个错误:

访问 XMLHttpRequest 在 'https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/lmvworker.min.js' 从原点“https://dev-bdh-project-sharing-management.bdh.nl”有 被 CORS 策略阻止:“Access-Control-Allow-Origin”标头 有一个值“https://sample-collection.s3.amazonaws.com”不是 等于提供的原点。

【讨论】:

    【解决方案2】:

    正如上面 cmets 中的建议 - 始终使用下面的 CDN URL 来加载查看器:

    https://developer.api.autodesk.com/modelderivative/v2/viewers/style.min.css?v=v7.*
    

    我们的官方文档不建议使用其他地址。

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 2019-02-07
      • 2018-09-19
      • 2016-01-11
      • 2016-10-30
      • 1970-01-01
      • 2021-08-12
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多