1

.Net Core API と、BabylonJs を使用して 3D モデルをレンダリングする React アプリケーションがあります。私のサーバー側では、シーンにレンダリングするためにクライアントから要求される 3D モデルを保存しています。そうするために、.Net Core サーバーで許可UseFileServerしました。UseStaticFilesCORS ポリシーを必要とするリクエストに適用するポリシーも作成しました。私が実行したポリシーは次のとおりです。

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でも発生しません。

ここに画像の説明を入力

また、Firefox および Opera への応答には欠落しているヘッダーが含まれていますが、 chrome への応答には含まれていません。

クロム:

ここに画像の説明を入力

ファイアフォックス:

ここに画像の説明を入力

オペラ:

ここに画像の説明を入力

4

1 に答える 1

1

しばらく調査した後、私は自分の問題の解決策を見つけました。問題の原因は CORS ではありませんでした。Google が Chrome のセキュリティ アップグレードを行い、Referrer-Policy を次のように変更したようです。

ここに画像の説明を入力

wgile 他の両方のブラウザーはオンのままです。

ここに画像の説明を入力 ここに画像の説明を入力

そのため、Google は https->https サイトでのみ CORS をサポートしています。自己署名証明書を作成し、https 用のポートを開くと、問題は解決しました。

于 2021-02-08T10:04:15.193 に答える