【发布时间】:2017-02-04 22:29:00
【问题描述】:
我有以下情况。
- 我通过 HTML 表单执行 GET 请求
- 我有一个文本字段,该字段的内容为
<< BLAH >alert (”BLAH”);//<</ blah >。已知它是无效的假设标记。
- 我有一个文本字段,该字段的内容为
- 我在
webRequest上有一个事件监听器 - 我尝试在 webrequest 的完整 url 上
decodeURIComponent,由表单提交触发 - 解码失败,出乎意料。
- 我希望 decodeURIComponent 应该能够解码浏览器从表单中编码的任何内容。这似乎是一个错误的假设,或者 chrome: 55.0.x* 中的一个错误
如果下面的 JS 在 chrome 扩展中,下面的 sn-p 将证明这个问题。
var filter = { urls: ['<all_urls>'] }
function handler (details) {
decodeURIComponent(details.url)
}
chrome.webRequest.onBeforeRequest.addListener(
handler,
filter,
['blocking', 'requestBody']
)
<form method='get'>
<input type='text' name='field'/>
<button type='submit'>submit</button>
</form>
当然你不能实际运行这个——webRequest 是 chrome 扩展 API 的一部分。
寻找提示。谢谢!
【问题讨论】:
-
请edit 成为主题的问题:包括一个完整 minimal reproducible example 重复问题。包括一个manifest.json,一些背景/内容/弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码不工作?”)必须包括:►期望的行为,►特定问题或错误和►必要的最短代码重现它在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:“如何创建 minimal reproducible example”、What topics can I ask about here? 和 How to Ask。
-
当您加载并执行您的扩展程序时,various appropriate consoles for your extension 中显示的究竟是什么?请提供准确输入、失败输出和预期输出。
-
您正在尝试解码整个 URI。通常你会使用:
decodeURI(),但使用decodeURIComponent() 不会导致它失败。 -
它实际上工作似乎依赖于提交表单的网页上的其他一些特征。我只是模拟了一个解码工作的本地示例,但在这里仍然失败:testingground.nowebscale.com。即
=> 扩展解码 URI 在我的本地表单上成功,但不是在他们的表单上。我需要做进一步的调查。因为我不能提供一个可重复的例子......我的例子是成功的!但扩展确实在其他地方失败。我仍然可以捆绑扩展并共享 -
minimal reproducible example 的要点和调试问题所需的信息是我们有足够的能力来复制问题。请edit在问题中提供更多信息,以便我们可以复制问题。如果您能获得并提供给我们
decodeURIComponent有问题的字符串,而不是必须向我们提供我们需要执行提交以触发webRequest的URL,那将是最好的。
标签: javascript google-chrome-extension decodeuricomponent