javascript - 地图框JS未加载
问题描述
嗨,我正在使用 pug 开发 NodeJS 项目。无法从 pug 模板加载 api https://api.mapbox.com/mapbox-gl-js/v2.0.0/mapbox-gl.js文件。
在 chrome 中,在控制台中出现错误。请找到下面的图片以供参考
请帮助解决此问题。
谢谢。
解决方案
您需要在页面的 res 标头中指定 csp 白名单的主机。
有关详细信息,请参阅此: CSP 指令
在遇到同样的问题并研究了一天之后,这对我有用:在渲染页面之前,将标题设置如下:
res.set({
'Content-Security-Policy': `default-src 'self' http: https:;block-all-mixed-content;font-src 'self' https: data:;frame-ancestors 'self';img-src 'self' data: blob:;object-src 'none';script-src 'self' https://api.mapbox.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';script-src-elem https: http: ;script-src-attr 'self' https://api.mapbox.com https://cdn.jsdelivr.net 'unsafe-inline';style-src 'self' https://api.mapbox.com https://fonts.googleapis.com 'unsafe-inline';worker-src 'self' blob:`
});
现在,您可以在渲染每个页面之前继续执行此操作,或者将此代码放在主应用程序的中间件中,就在您定义路由器以渲染 html 页面之前。
像这样的东西:
<appName>.use( (req, res, next)=>{
res.set....//as done above
next();
});
将来,如果某些东西停止工作,请检查浏览器窗口并在控制台中查看,您只需将其他一些受信任的来源列入白名单。
推荐阅读
- javascript - 根据数据库值有条件地显示按钮
- r - forcenetwork 在 Rstudio 中显示良好,但在 html 中保存后显示没有边缘
- javascript - 如何使用 Material-UI 在 React 中迭代的信息制作 2 列
- c++ - 循环后我无法打印一些东西
- javascript - 不要在 postgreSQL 中插入
- codeigniter - 在 Bootstrap 模式中添加验证
- keycloak - keycloak uma 策略和我们通过 keycloak ui 创建的策略有什么区别
- react-native - React native expo 应用程序:深度链接回应用程序
- r - 使用 purrr 块进行错误处理 - 安全,可能是 tryCatch
- r - 在 R 中组合的 For + 循环函数