0

次のような状況があります。decodeURIComponentがフォーム送信からchrome.webRequestに提供されたURIから失敗しました

  • 私は1つのテキストフィールドとフィールドが<<BLAH>alert (”BLAH”);//<</ blah >の内容を持っている持っているHTMLフォーム
    • 経由でGETリクエストを行います。無効で仮説的なマークアップであることが知られています。
  • 私は予想に反して、フォームの送信によりtrigged
  • 復号化が失敗し、WebRequestクラスの完全なURLにdecodeURIComponentにしようwebRequest
  • にイベントリスナーを持っています。
    • 私は、decodeURIComponentは、ブラウザがフォームからエンコードしたものをデコードできると期待しています。これは間違った仮定のように見える、またはクロームのバグ:JSの下Chromeの拡張機能にあった場合*
    • 55.0.x

、次のスニペットは、問題を示します。

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の一部です。

ヒントを探しています。ありがとう!

+0

トピックを作成するには質問をしてください:**完全** [mcve]を*問題を複製*してください。 * manifest.json *、背景/コンテンツ/ポップアップスクリプト/ HTMLの一部を含みます。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen

+0

あなたのエクステンションをロードして実行すると、[*あなたのエクステンションのさまざまな適切なコンソール](http://stackoverflow.com/a/38920982/3773011)に*正確に*表示されますか?正確な入力、失敗した出力、期待される出力を提供してください。 – Makyen

+0

URI全体をデコードしようとしています。通常は、[decodeURIComponent()](https://developer/javaScript/Reference/Global_Objects/decodeURI)を使用して、['decodeURI()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI)代わりに、エラーが発生しないようにしてください。 – Makyen

答えて

0

これは、根っからの中括弧になりました。 Chromeは、あなたに代わってURIに優しい文字を再マップしません。それは'”' !== '"'で、私のフォームフィールドはです。 ==>%94。フードの下のフォームがencodeURIComponent('”') ==> %E2%80%9Dを使用していないというのは、奇妙なことです。とにかくdecodeURIComponent('%94')が爆発する。

+0

'' 'を'%94'としてエンコードしているのは誰ですか?これは有効なパーセントエンコード値ではありません。 – Kaiido

+0

Chrome。 HTMLフォーム。 – cdaringe

+0

ターゲットリクエストにこの '%94BLAH%94'がありますか?または、それは 'onBeforeRequest'のイベントハンドラ' .details'でのみですか?私のクロームでは、 '%E2%80%9DBLAH%E2%80%9D'というリクエストを期待通りに行います。また、クロムのバージョンはこれですか? – Kaiido

0

decodeURIComponentを使用して文字列をデコードしようとしたところ、Google ChromeでURI malformedエラーが発生しました。その文字列にあった文字である%で失敗しました。その文字列の有効性をチェックする必要はありませんでした。だから、私はunescapeメソッドを使用して終了しました:unescape(mystring)

関連する問題