出于安全考虑,思源在使用iframe嵌入外部网页时与加载网络图片时行为与标准的浏览器一致。

而部分网站设置了不能通过iframe进行访问,这些网站就不能在思源中通过iframe块嵌入;部分网站设置了不能在外站引用图片,这些网站的图片就不能在笔记中正常加载。

其他软件有可能实现了嵌入这些网站/图片的功能,但这样可能有一定的安全风险。


该限制可以使用如下方案解除

解除内容安全限制

注: 使用该方案造成的安全&法律风险需要用户自行承担
参考: 链接打破iframe安全限制的3种方案 | 黯羽轻扬
原理: 移除所请求资源的 HTTP 响应头中安全限制相关的字段

  1. 进入思源笔记的安装目录
  2. 打开安装目录中的 resources/app/electron/main.js文件
  3. 在该文件中搜索 require('@electron/remote/main').enable(mainWindow.webContents)字段
  4. 在该字段的下一行插入如下代码块后保存文件, 重新打开软件即可解除内容安全限制 ```javascript / 👇👇👇解除图片防盗链限制👇👇👇 / mainWindow.webContents.session.webRequest.onBeforeSendHeaders( (details, cb) => {

    1. if (-1 < details.url.indexOf('bili')) {
    2. // B 站不移除 Referer https://github.com/siyuan-note/siyuan/issues/94
    3. cb({ requestHeaders: details.requestHeaders })
    4. return
    5. }
    6. for (let key in details.requestHeaders) {
    7. switch (key.toLowerCase()) {
    8. case 'referer':
    9. delete details.requestHeaders[key]
    10. break;
    11. default:
    12. break;
    13. }
    14. }
    15. cb({ requestHeaders: details.requestHeaders })

    }) / 👆👆👆解除图片防盗链限制👆👆👆 / / 👇👇👇解除 iframe 安全限制👇👇👇 / mainWindow.webContents.session.webRequest.onHeadersReceived((details, cb) => { for (let key in details.responseHeaders) {

    1. switch (key.toLowerCase()) {
    2. case 'x-frame-options':
    3. case 'content-security-policy':
    4. case 'access-control-allow-origin':
    5. delete details.responseHeaders[key]
    6. break;
    7. default:
    8. break;
    9. }

    } cb({ responseHeaders: details.responseHeaders }) }) / 👆👆👆解除 iframe 安全限制👆👆👆 /

```