ContentSecurityPolicy 防止 Electron 中的获取请求

2024-02-20

我正在尝试构建一个发出 api 请求的电子应用程序,但是当我进行 api 调用时,出现以下错误:

拒绝连接到“”,因为它违反了以下内容安全策略指令:“default-src 'self' 'unsafe-inline' data:”。请注意,“connect-src”未明确设置,因此“default-src”用作后备。

拒绝连接到“”,因为它违反了文档的内容安全策略。

我用来发出请求的代码是

const getContent = async (url) => await fetch(url)

我尝试添加元标记以允许 unsafe-eval 并将 BrowserWindow 中的 webSecurity 设置为 false,但似乎都没有任何效果。我也尝试使用 axios 发出请求并得到相同的响应。尽管看到了几个人们从 Electron 内部发出 api 请求的例子,但我在互联网上找不到任何其他这个问题的实例。


如果您使用 electro-forge,这个资源将会很有帮助。https://githubmemory.com/repo/电子-userland/电子-forge/issues/2331 https://githubmemory.com/repo/electron-userland/electron-forge/issues/2331

转到 package.json,查找 config,然后查找插件并插入此内容

"devContentSecurityPolicy":"default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;"

如果您仍然感到困惑,这是我的 package.json 代码

 {
  "name": "x",
  "productName": "x",
  "version": "1.0.0",
  "description": "My Electron application description",
  "main": ".webpack/main",
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "echo \"No linting configured\"",
  },
  "keywords": [],
  "license": "MIT",
  "config": {
    "forge": {
      "packagerConfig": {},
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "x"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ],
      "plugins": [
        [
          "@electron-forge/plugin-webpack",
          {
            "devContentSecurityPolicy":"default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;",
            "mainConfig": "./webpack.main.config.js",
            "renderer": {
              "config": "./webpack.renderer.config.js",
              "entryPoints": [
                {
                  "html": "./public/index.html",
                  "js": "./public/renderer.js",
                  "name": "main_window"
                }
              ]
            }
          }
        ]
      ]
    }
  },
  "devDependencies": {
    "@babel/core": "^7.15.5",
    "@babel/preset-react": "^7.14.5",
    "@electron-forge/cli": "^6.0.0-beta.60",
    "@electron-forge/maker-deb": "^6.0.0-beta.60",
    "@electron-forge/maker-rpm": "^6.0.0-beta.60",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.60",
    "@electron-forge/maker-zip": "^6.0.0-beta.60",
    "@electron-forge/plugin-webpack": "6.0.0-beta.60",
    "@vercel/webpack-asset-relocator-loader": "1.7.0",
    "babel-loader": "^8.2.2",
    "css-loader": "^6.0.0",
    "electron": "^15.3.1",
    "install": "^0.13.0",
    "node-loader": "^2.0.0",
    "npm": "^7.22.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "style-loader": "^3.0.0"
  },
  "dependencies": {
    "@date-io/date-fns": "^1.3.13",
    "@date-io/moment": "^2.10.11",
    "@material-ui/core": "^4.11.4",
    "@material-ui/icons": "^4.11.2",
    "@material-ui/pickers": "^4.0.0-alpha.12",
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "@wojtekmaj/react-daterange-picker": "^3.2.0",
    "@y0c/react-datepicker": "^1.0.4",
    "aes-js": "^3.1.2",
    "ag-grid-community": "^25.3.0",
    "ag-grid-react": "^25.3.0",
    "axios": "^0.21.1",
    "base-64": "^1.0.0",
    "bootstrap": "^4.6.0",
    "bootstrap-daterangepicker": "^3.1.0",
    "crypto-js": "^4.1.1",
    "date-fns": "^2.22.1",
    "electron-splashscreen": "^1.0.0",
    "electron-squirrel-startup": "^1.0.0",
    "hex64": "^0.4.0",
    "jquery": "^3.6.0",
    "lottie-react": "^2.1.0",
    "moment": "^2.29.1",
    "moment-timezone": "^0.5.32",
    "node-jsencrypt": "^1.0.0",
    "prop-types": "^15.7.2",
    "qrcode": "^1.4.4",
    "react-bootstrap-daterangepicker": "^7.0.0",
    "react-custom-scrollbars-2": "^4.4.0",
    "react-date-range": "^1.2.0",
    "react-dropdown-input": "^0.1.11",
    "react-geolocated": "^3.2.0",
    "react-live-clock": "^5.2.0",
    "react-lottie": "^1.2.3",
    "react-moment": "^1.1.1",
    "react-native-qrcode-svg": "^6.1.1",
    "react-native-svg": "^12.1.1",
    "react-otp-input": "^2.3.1",
    "react-qr-code": "^2.0.2",
    "react-responsive": "^8.2.0",
    "react-router-dom": "^5.2.0",
    "react-scripts": "4.0.3",
    "react-scroll": "^1.8.3",
    "react-table": "^7.7.0",
    "react-to-print": "^2.13.0",
    "react-virtualized": "^9.22.3",
    "react-virtualized-auto-sizer": "^1.0.5",
    "react-window": "^1.8.6",
    "reactstrap": "^8.9.0",
    "rsuite": "^4.10.2",
    "systeminformation": "^5.8.7",
    "text-to-binary-converter": "^1.0.2",
    "web-vitals": "^1.0.1",
    "zustand": "^3.5.7"
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ContentSecurityPolicy 防止 Electron 中的获取请求 的相关文章

随机推荐

  • Webpack 2:无法解析模块

    我有一个这样的项目 root webpack config js app app js js dep js core module js 这是 webpack 配置文件 module exports entry app app js out
  • Nestjs 与 Plain Express 性能对比

    我刚刚测试了一个简单的 Nest 控制器的性能 该控制器在 get 请求上返回文本 无数据库 以及与 Express 相同的简单 GET 控制器 中间件 我使用WRK工具来测试性能 因此 plain express 的速度比 Nestjs
  • 如何修复 Microsoft Edge 中不显示的 Web 组件

    我正在尝试 lit element 在 Chrome 和 Firefox 等浏览器上一切都很顺利 但当我尝试 Microsoft Edge 和 IE11 时遇到了问题 在 Chrome 和 Firefox 中显示的 Web 组件在 Micr
  • 如何将犰狳矩阵转换为向量的向量?

    我创建了一个犰狳 C 矩阵 如下所示 arma mat A A zeros 3 4 我想将其转换为由定义的向量组成的向量 std vector lt std vector
  • 安装我的 nuget 包后执行操作

    我们创建了很多 NuGet 包 其中一个是一个工具 它包含一个特殊的编译器 它的安装就像一个dotnet tool 命令的名称是 PolyGen 我们使用了类似的机制Grpc Tools使用 这意味着我们已经在 NugetPackage 中
  • 让 vim 修改文件而不是移动新版本?

    我希望我的应用程序在保存文件时自动更新 因此 我使用inotify ubuntu 来创建检测事件的观察者 问题是vim覆盖文件而不是更新它 所以我的观察者在第一次更新后就丢失了 我想知道 有没有办法设置 vim 使其不使用交换文件并直接更新
  • 如何为asp.net web api编写集成测试

    我正忙着用 asp net web api 设计一个 web 服务 我想开始对每个控制器进行单元测试 到目前为止 这是我的测试课 TestClass public class MyDevicesControllerTest TestMeth
  • mpdf 忽略 javascript

    我在这里有一个问题 我已经使用缓冲来使用 mpdf 获取 pdf 文件 但我在这里有点困惑 我正在缓冲的页面上有一些 javascript 但是从 javascript 生成的内容没有转换为 pdf 让我说清楚 假设我有这个元素 div d
  • ios 访问主窗口或视图

    我想知道是否有一种简单的方法可以访问 IOS 中的主窗口或视图 类似于 UIScreen mainScreen 谢谢 Try UIWindow frontWindow UIApplication sharedApplication wind
  • 如何使用 1 个 mySQL 查询返回所有结果的数值箱线图数据?

    tbl votes id item id vote 当然 我们可以通过以下方式解决这个问题 the smallest observation so the lower quartile lq the median me the upper
  • 通过 Swift 设置 ARKit 方向

    我正在开发一个 ARKit 应用程序OpenGL 因此直接使用 ARKit 而不是使用 SceneKit 默认情况下 ARKit 设置为横向 但我无法找到任何旋转为纵向的文档或示例 SceneKit 示例适用于纵向 但Metal示例仅适用于
  • RPC 模型中的correlationId 和临时队列 - AMQP

    我正在读书RPC模型 http www rabbitmq com tutorials tutorial six java html在 AMQP 中使用 RabbitMQ 本教程创建了一个临时队列 并且还correlationId 临时队列是
  • Java中多余的import语句有什么影响?

    冗余java有什么影响import声明 它们会影响编译运行时 性能 大小 吗 或者只是诸如智能感知之类的东西 换个方式问 删除它们有多重要 导入语句仅影响编译期间发生的情况 编译器获取这段代码 并创建一个 class以可执行格式 二进制形式
  • 使用 Swift 3 进行 JSON 序列化

    我正在尝试通过从 JSON 数据填充数组来填充表 我正在使用下面的代码 但不断收到错误 类型 Any 没有下标成员 在以下代码行上 self tableData append jsonResult i title as String sel
  • UWP - 仅在设计器中应用的字体

    我的主 UWP 应用程序 Imp Dash 引用了一个类库 Imp Dash Cook 在所述类库的页面中 我有以下 XAML
  • codeigniter 活动记录嵌套查询

    我在将以下 MySQL 代码转换为 Codeigniter 活动记录查询时遇到问题 SELECT sss c country name c country code FROM SELECT gr FROM be goldrate as gr
  • 使用 Lodash 省略嵌套属性

    我正在尝试摆脱这些属性5MinuteRate and 15MinuteRate在以下对象中 var object requestsPerSecond mean 1710 2180279856818 count 10511 currentRa
  • javascript:修剪对象的所有属性[重复]

    这个问题在这里已经有答案了 有没有办法修剪对象的所有属性 换句话说 我可以改变这一点 a a b b c c To this a a b b c c 看来我无法映射对象 那么如何将函数应用于所有属性并取回对象 您可以使用Object key
  • 使用C计算目录中文件的数量

    如何在linux平台上使用C来统计目录中的文件数量 不保证此代码可以编译 而且它实际上只与 Linux 和 BSD 兼容 include
  • ContentSecurityPolicy 防止 Electron 中的获取请求

    我正在尝试构建一个发出 api 请求的电子应用程序 但是当我进行 api 调用时 出现以下错误 拒绝连接到 因为它违反了以下内容安全策略指令 default src self unsafe inline data 请注意 connect s