node.js - 使用 Puppeteer 访问 localStorage,无需 url

标签 node.js permissions local-storage puppeteer

我正在使用 page = browser.newPage() 创建一个新页面。 然后,我使用包含脚本的 page.setContent(...) 设置 html 内容。

加载脚本后,我对其进行调用,该调用会尝试使用 localStorage ,此时我收到访问被拒绝错误:

错误:评估失败:DOMException:无法从“窗口”读取“localStorage”属性:此文档的访问被拒绝。

根据我的理解,这是因为为了写入 localStorage,必须有一个原始集 - 在我的情况下我没有。

如果我更改代码以首先导航到 url page.goto('http://localhost') 然后执行 html 注入(inject),我可以毫无问题地写入 localStorage。

有没有一种方法可以写入 localStorage 而无需先访问现有 URL?

最佳答案

对于 future 遇到此问题的任何人。无法在没有来源的情况下设置本地存储数据。如果您无法导航到页面,则可以使用 here 中描述的请求拦截。这也比调用网络中的随机页面快得多。

await page.setRequestInterception(true)
page.on('request', request => {
  request.respond({ status: 200, contentType: 'text/html', body: '' })
})
await page.goto('http://127.0.0.1')

之后,您就可以设置该页面的本地存储。

关于node.js - 使用 Puppeteer 访问 localStorage,无需 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264725/

相关文章:

Javascript, Node : search for a specific word string in files

permissions - Ansible - 查找和设置权限,包括粘滞位

permissions - 使用 Ansible 创建 GCE 实例,权限问题

javascript - 解析本地存储对象会出现未捕获的语法错误?

javascript - Jquery 保留点击的链接并在刷新后添加/删除 css 类

linux - 让 Node 在 Linux 上启动

node.js - Socket.io 仅向房间中的部分用户发送消息

调用文件的任何地方的 node.js 意外标识符

java - 文件权限问题

javascript - 带有图像的本地存储