【发布时间】: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