出于安全考虑,思源在使用iframe嵌入外部网页时与加载网络图片时行为与标准的浏览器一致。
而部分网站设置了不能通过iframe进行访问,这些网站就不能在思源中通过iframe块嵌入;部分网站设置了不能在外站引用图片,这些网站的图片就不能在笔记中正常加载。
其他软件有可能实现了嵌入这些网站/图片的功能,但这样可能有一定的安全风险。
解除内容安全限制
注: 使用该方案造成的安全&法律风险需要用户自行承担
参考: 链接打破iframe安全限制的3种方案 | 黯羽轻扬
原理: 移除所请求资源的 HTTP 响应头中安全限制相关的字段
- 进入思源笔记的安装目录
- 打开安装目录中的
resources/app/electron/main.js
文件 - 在该文件中搜索
require('@electron/remote/main').enable(mainWindow.webContents)
字段 在该字段的下一行插入如下代码块后保存文件, 重新打开软件即可解除内容安全限制 ```javascript / 👇👇👇解除图片防盗链限制👇👇👇 / mainWindow.webContents.session.webRequest.onBeforeSendHeaders( (details, cb) => {
if (-1 < details.url.indexOf('bili')) {
// B 站不移除 Referer https://github.com/siyuan-note/siyuan/issues/94
cb({ requestHeaders: details.requestHeaders })
return
}
for (let key in details.requestHeaders) {
switch (key.toLowerCase()) {
case 'referer':
delete details.requestHeaders[key]
break;
default:
break;
}
}
cb({ requestHeaders: details.requestHeaders })
}) / 👆👆👆解除图片防盗链限制👆👆👆 / / 👇👇👇解除 iframe 安全限制👇👇👇 / mainWindow.webContents.session.webRequest.onHeadersReceived((details, cb) => { for (let key in details.responseHeaders) {
switch (key.toLowerCase()) {
case 'x-frame-options':
case 'content-security-policy':
case 'access-control-allow-origin':
delete details.responseHeaders[key]
break;
default:
break;
}
} cb({ responseHeaders: details.responseHeaders }) }) / 👆👆👆解除 iframe 安全限制👆👆👆 /
```