0

我有以下情况。

  • 我通过 HTML 表单执行 GET 请求
    • 我有一个文本字段,该字段的内容为<< BLAH >alert (”BLAH”);//<</ blah >. 已知无效的假设标记。
  • 我有一个事件监听器webRequest
  • 我尝试decodeURIComponent在 webrequest 的完整 url 上,由表单提交触发
  • 解码失败,出乎意料。
    • 我希望 decodeURIComponent 应该能够解码浏览器从表单中编码的任何内容。这似乎是一个错误的假设,或者 chrome: 55.0.x* 中的一个错误

如果以下 JS 在 chrome 扩展中,则以下代码段将演示该问题。

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 的一部分。

寻找提示。谢谢!

4

2 回答 2

0
于 2017-02-05T03:17:48.320 回答
0

当我尝试使用以及URI malformed解码字符串时,我在 Google Chrome 中遇到了错误。decodeURIComponent它对该字符串中的字符失败%,我不希望对该字符串的有效性进行任何检查。所以我最终使用了unescapeintsead方法:unescape(mystring)

于 2017-05-12T18:16:39.743 回答