我正在使用 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/