検証と情報取得のためにサードパーティ サービスに送信するフォームがあります。サードパーティのバックエンドでは、エラーの URL を指定できます。1 つのオプションは「参照 URL」です。
それは一見完璧です。ユーザーが無効なフォームを POST すると、ユーザーがいるページが「リロード」され (実際にはそうではありませんが、それが印象です)、次のようなクエリ文字列から取得されたエラー メッセージが表示されます。
http://somesite.com/?errorMessages=some%20message~~~some%20other%20message~~~etc
個別のエラー メッセージを解析し、何が問題なのかをユーザーに通知する DIV にプッシュします。ここまでは順調ですね。
ただし、ユーザーはフォームを台無しにし続け、再度 POST すると、リファラーはエラー メッセージを含む URL 全体になります。サーバーは、元のエラー メッセージ (リファラーです!) と残りの問題を返します。
http://somesite.com/?errorMessages=some%20message~~~some%20other%20message~~~etc&errorMessages=new%20message~~~another%20new%20message~~~etc
問題を確認できますが、明確にするために:
- フォームは最初から十分に長いです。これらのチェックされていない追加により、最終的にクエリ文字列がブラウザーの制限を超え、エラーが発生します。
- 解析アルゴリズムは、最新の問題のみを報告していません。元の問題もまだ報告されています。
ふぅ
これは、単純な質問の長い裏話です。
submit イベントで、JavaScript を使用して参照 URL からクエリ文字列をクリアする方法はありますか? リファラーのスプーフィングをしたり、正当なセキュリティ上の問題を回避したりしたくありません。クエリ文字列を除いた「真の」参照ページを送信できるようにしたいだけです。
私はすでにjQueryを使用しているため、どの回答でも自由に使用できます。