【问题标题】:CORS problem requesting a file (ONLY on Google Chrome)请求文件的 CORS 问题(仅在 Google Chrome 上)
【发布时间】:2021-04-30 06:52:43
【问题描述】:

我有一个 .Net Core API 和一个使用 BabylonJs 渲染一些 3D 模型的 React 应用程序。在我的服务器端,我存储了客户端请求渲染到场景中的 3D 模型。为此,我在我的 .Net Core 服务器上允许使用 UseFileServerUseStaticFiles。我还创建了一个策略来申请需要 CORS 策略的请求。我实施的政策如下:

services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy", policyBuilder => policyBuilder
                    .AllowAnyHeader()
                    .SetIsOriginAllowedToAllowWildcardSubdomains()
                    .AllowAnyMethod()
                    .SetIsOriginAllowed((host) => true)
                    .AllowCredentials());
        });

我将它应用于以静态文件为目标的请求,方式如下:

app.UseFileServer(enableDirectoryBrowsing: true);
app.UseStaticFiles(fileOptions);

在客户端,Babylon 库通过以下方式完成请求:

SceneLoader.ImportMeshAsync(
      "",
      "http://localhost:9001/resources/objects/",
      "sphere.glb",
      scene
    )
      .then((result) => {
        result.renderingGroupId = 1;
        scene.createDefaultCamera(true, true, true);
        scene.activeCamera.alpha += Math.PI;
      })
      .catch((error) => {
        return null;
      });

发生的情况是,我只在 google chrome 上收到以下错误,在 Firefox 上也没有在 Opera 上 not

此外,对 Firefox 和 Opera 的响应包含 缺少的标头,而对 chrome 的响应则没有。

铬:

火狐:

歌剧:

【问题讨论】:

    标签: google-chrome .net-core cors babylonjs referrer-policy


    【解决方案1】:

    经过一段时间的研究,我找到了解决问题的方法。导致问题的原因不是 CORS。 Google 似乎对 Chrome 进行了安全升级,将 Referrer-Policy 更改为:

    wgile 其他两个浏览器都保持打开:

    因此,谷歌仅在 https->https 网站上支持 CORS。创建自签名证书并打开 https 端口后问题已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多