请求文件的 CORS 问题(仅限 Google Chrome)
CORS problem requesting a file (ONLY on Google Chrome)
我有一个 .Net Core API 和一个使用 BabylonJs 渲染一些 3D 模型的 React 应用程序。在我的服务器端,我存储了客户端将请求渲染到场景中的 3D 模型。为此,我在我的 .Net Core 服务器上允许 UseFileServer
和 UseStaticFiles
。我还创建了一个策略来申请需要 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 和 not 上收到以下错误,在 Firefox 上也没有在 Opera 上收到。
此外,对 Firefox 和 Opera 的响应包含 缺失的 header,而对 chrome 的响应则没有。
Chrome:
火狐:
歌剧:
经过一段时间的研究,我找到了解决问题的方法。导致问题的原因不是 CORS。看起来 Google 已经对 Chrome 进行了安全升级,将 Referrer-Policy 更改为:
wgile 其他两个浏览器保持打开状态:
因此,google 仅在 https->https 站点上支持 CORS。创建自签名证书并打开 https 端口后问题已解决。
我有一个 .Net Core API 和一个使用 BabylonJs 渲染一些 3D 模型的 React 应用程序。在我的服务器端,我存储了客户端将请求渲染到场景中的 3D 模型。为此,我在我的 .Net Core 服务器上允许 UseFileServer
和 UseStaticFiles
。我还创建了一个策略来申请需要 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 和 not 上收到以下错误,在 Firefox 上也没有在 Opera 上收到。
此外,对 Firefox 和 Opera 的响应包含 缺失的 header,而对 chrome 的响应则没有。
Chrome:
火狐:
歌剧:
经过一段时间的研究,我找到了解决问题的方法。导致问题的原因不是 CORS。看起来 Google 已经对 Chrome 进行了安全升级,将 Referrer-Policy 更改为:
wgile 其他两个浏览器保持打开状态:
因此,google 仅在 https->https 站点上支持 CORS。创建自签名证书并打开 https 端口后问题已解决。