問題タブ [url-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - すべての sendRedirect() リダイレクトを UTF-8 エンコードするように Tomcat 5.5 を構成しますか?
私たちが構築している製品の要件は、その URL エンドポイントが母国語のユーザーにとって意味的に意味のあるものであることです。これは、太陽の下ですべてのアルファベットをサポートするには、UTF-8 でエンコードされた URL が必要であることを意味します。
また、サポートするすべてのアプリケーション サーバーとバージョンのインストール構成ドキュメントを提供する必要もありません。そのため、これをコード内で実行できればよいでしょう。サーブレットがリクエストを受信するまでに、アプリサーバーなどによってエンコードされているため、これは不可能な場合があります.
リクエストのパス情報を次のように再構成することで、これを機能させました(ISO-Latinの非US ASCII文字を使用した最初のユースケースの場合)。
そしてそれを解析します。
ただし、sendRedirect() を使用して POST から GET にリダイレクトした後は、これは機能しません。リクエストのパスは既にエスケープされているため (ö は %F6 としてエンコードされます)、上記の方法は機能しません。
だから私の質問は、私はこれについてすべて間違っているのでしょうか? もしそうなら、私の無知に対する解毒剤は何ですか?:)
更新:解決策が見つかりました。問題は、サーブレット API が、リダイレクトを送信する前の URL エンコーディングに関して奇妙な動作をすることです。sendRedirect() を呼び出す前に、URL エンコード (UTF-8 文字をエスケープ) する必要があります。encodeRedirectURL() メソッドはそれを行いません。
このページで説明しています: http://www.whirlycott.com/phil/2005/05/11/building-j2ee-web-applications-with-utf-8-support/
webserver - Webアプリケーションがクエリ文字列をUTF-8であると想定するのはほぼ標準ですか?
ブラウザのアドレスバーに入力または貼り付けたとき:
http://www.google.com/search?q=%E5%A4%A9
エンコーディングが UTF-8 であるか他のエンコーディングであるかを判断する方法はないと思うので、アプリケーションは通常 UTF-8 であると想定します。では、アプリが望んでいる、または想定しているエンコーディングとして解釈するのは、完全にアプリ次第ですか?
(すべての Web サイトと、私が取り組んだプラットフォームでさえ、ほとんどの場合 UTF-8 のようです)
更新:代わりに webapp に変更されました。
xml - XSL アンエスケープ URL を停止する方法
XSL を使用して、ブラウザーで電子メール メッセージの XML 表現を表示しています。電子メールの添付ファイルは、メインの電子メール XML ファイルとは別のファイルに保存されるため、電子メールの結果の Web ページに添付ファイルへのリンクを含めたいと考えています。
ただし、一部の添付ファイルは電子メール メッセージ自体であり、転送または返信であった可能性があるため、FW:Importantのようなコロンを含む名前になっている場合があります。名前は FW%3AImportant として URL エスケープされ、 FW%3AImportant.xmlとしてファイルとして保存されます。
問題は、XSL で生成された Web ページの URL がエスケープされておらず、再びコロン ( file://FW:Important.xml ) が含まれているため、リンクが壊れていることです。この動作を停止する最良の方法は何ですか?
XML スニペットは次のとおりです。
XSL スニペットは次のとおりです。
ruby-on-rails - RailsでCookieのURLエンコーディングを無効にするにはどうすればよいですか
非常に古いレガシー アプリケーションと共存する必要がある Rails アプリケーションがあります。レガシ アプリケーションは、特定の文字列を含む値を持つ Cookie を探します。残念ながら、従来の Cookie の文字にはスラッシュが含まれていることがよくあります。私が抱えている問題は、Rails アプリケーションが Cookie を書き込むときに、最初に URL エンコードを行うことです。これにより、Cookie の値が正しくないため、レガシー アプリが壊れてしまいます。
ファイルを編集してRails 1.13.5でこれを機能させましたcookie_performance_fix.rb
(パス./actionpack-1.13.5/lib/action_controller/cgi_ext/cookie_performance_fix.rb
:)
これを機能させるために、次のようにコードを変更しました:
Rails をバージョン 2.3.2 にアップグレードすることを決定するまで、これは実際には問題なく機能していまし
た。Rails 2.3.2 では、cookie_performance_fix.rb
ファイルはもう存在しません。同じディレクトリを調べたところcookie.rb
、同様の方法で変更しようとしたというファイルが見つかりました。
残念ながら、これはうまくいかないようです。Cookie は、新しい Rails 2.3.2 で引き続き URL エンコードされます。URL エンコーディングをオフにするのは最善の方法ではないことはわかっていますが、レガシー アプリケーションが廃止されるまではあまり選択肢がありません。残念ながら、Cookie の URL エンコード解除のサポートを追加するレガシー コードにアクセスできないため、スラッシュを含む正しいシーケンスでレガシー Cookie が書き込まれていることを確認する必要があります。Rails 2.3.2 で URL エンコーディングを無効にする方法を誰か教えていただければ幸いです。
ありがとう。
c# - WCF はストリームを自動的に URL エンコード/デコードしますか?
HTTP post/get リクエストを使用するプログラムのサービスをプログラミングしているので、 を受け取ってSystem.IO.Stream
を返すフック メソッドを使用してすべての受信リクエストを処理しますSystem.IO.Stream
。
着信要求 (HTML フォームに含まれる) を文字列に変換してから を使用して解析するとSystem.Web.HttpUtility.ParseQueryString(string)
、データが自動的に URL デコードされるようです。ファイル パス (Windows UNC、理由は説明しません) を返すとき、最初に文字列を URL エンコードしてから、ストリームに変換して return-statement を使用して返すと、クライアントは doublely- を取得するようです。コード化された文字列。
念のために言っておきますが、WCF は、使用の一環としてストリームを自動的に URL エンコード/デコードしますSystem.ServiceModel.WebHttpBinding
か?
url - URL では、%20 または + を使用してスペースをエンコードする必要がありますか?
URL では、またはを使用してスペースをエンコードする必要があります%20
か+
? たとえば、次の例では、どれが正しいですか?
当社は前者に傾いていますが、 (and )で Java メソッドURLEncoder.encode(String, String)
を使用すると、後者が返されます。"xbox 360"
"UTF-8"
それで、違いは何ですか?
asp.net - 処理前にURLエンコードが失われる-ASP.net
URLエンコードを多用するウェブストアを構築しています。
私のデータベースには、リンクの生成に使用する部門とカテゴリのリストがあります。もちろん、これらは送信前にURLエンコードされます。
いくつかの典型的なリンクは...
/
MySite/Store/Countertop+Equipment/Can+Openers.aspx/MySite/Store/Dinnerware.aspx
/MySite/Store/Kitchen/Pastry%2f+Decorating.aspx
HTTPHandlerで、app.Request.Pathを呼び出して現在のパスを取得します。この呼び出しによって返される文字列はURLエンコードされなくなったため、正しく解析できなくなりました。URLエンコードが失われると、 / MySite / Store / Kitchen / Pastry% 2f+Decorating.aspxは
/MySite/Store/Kitchen/Pastry/Decorating.aspxになります。
これは明らかに、URLをQueryStringに変換するメソッドを壊しています。
誰もがこれを修正する方法を知っていますか?
これが私のHTTPHandlerのコアです
私は本当にあなたの助けに感謝します!
c# - ASP.Net URL エンコーディング
ASP.net で URL 書き換えを実装していますが、URL が原因でさまざまな問題が発生しています。
URL は、部門とカテゴリのデータベースから生成されます。従業員が、サイトを壊すことなく、適切な特殊文字を使用してアイテムをデータベースに追加できるようにしたいと考えています。
URL を作成する前にデータをエンコードしています。
いくつかの問題があります...
- IIS は、.net に到達する前に URL をデコードするため、「/」が含まれているものを適切に解析できません。
- ASP.net は、特定のページ内で "~" を役に立たなくする URL によって混乱します。
- ビルトイン テスト サーバーからローカル IIS サーバー (XP マシン) に移行しましたが、エンコードされた & (%26) を含む URL で「Bad Request」エラーが発生します。
- UrlEncode では、「.」などの一部の区切り文字がそのまま残ります。
この件に関して他に 2 つの関連する投稿がありましたが、その時点ではアップストリームの大きな問題ではなく、小さな問題しか見ていませんでした。「Bad Request」の問題を解決するためのいくつかのレジストリのトリックを見つけましたが、共有ホスティング環境にデプロイすることでそれが役に立たなくなります。また、これが何らかのセキュリティ問題の修正であることも知っているので、開いているワームの種類を知らずに、必ずしも回避したくありません。
.net に生の URL を強制的に渡させたり、IIS の設定を上書きさせたりするのではなく、そもそも本当に安全な URL を作成したいと考えています。
私はAntiXss.URLEncode、HttpUtility.URLEncode、URI.EscapeDataStringを試したことに注意してください。double URLEncodng のような愚かなことも試しました。私が必要とすることを行うユーティリティはありますか、それとも本当に自分でロールバックする必要がありますか? % を通常とは異なる文字列に置き換えるようなハッキーなことをすることさえ考えています。最終結果は、少なくとも読み取り可能である必要があります。これが、最初に URL 書き換えを使用するポイントでした。
長い投稿で申し訳ありません。必要な詳細がすべて含まれていることを確認したかっただけです。これに関する関連情報が見つからないようです。これはよくある問題のようです。そのため、何か大きなものを見逃している可能性があります。ご協力ありがとうございます。長い説明をお待ちください。
わかりやすくするために編集します。
URL がデータベースから構築されていると言うとき、私が言いたいのは、ディレクトリ構造がデータベース内の部門とカテゴリから構築されているということです。
URL の例 -
Mystore/Refrigeration/Bar+Fridge.aspx
Mystore/Cooking+Equipment.aspx
Mystore/Kitchen/Cutting+Boards.aspx
「Beverage & Bar」や「Pastry/Decorating」などの部門を使用して URL を作成すると、問題が発生します。最初にエンコードされているにもかかわらず、これらは前述の問題を引き起こします。
私のハンドラーは既に実装されており、特殊文字エンコーディングの問題を除いて正常に動作しています。