9

アフィリエイト パートナーとの連絡ミスにより、サーバー上で呼び出す URL が混同されています。

これは、彼らが私たちのサーバーで呼び出すことになっている URL です:

 /AAAAAAAA/?b=CCCCCCC

残念ながら、これは彼らのシステムに実装されていました

 ?b=CCCCCCC/AAAAAAA

コンポーネントを簡単に解析できますが、/ を含むクエリ文字列パラメーターが実際には有効な URL ではないことが心配です。

URL 内の / は実際に有効ですか? それとも気にする必要がありますか? どのような状況で、クエリ文字列でエンコードされていない/問題が発生する可能性がありますか。

4

3 に答える 3

11

RFC 3986: Uniform Resource Identifier (URI): Generic Syntax (2005 年以降) によると、はい、/クエリ コンポーネントで許可されます。これはクエリ文字列の BNF です: ( RFC 3986の付録 A 内)

query         = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

仕様には次のように書かれています。

  • 文字スラッシュ (「/」) と疑問符 (「?」) は、クエリ コンポーネント内のデータを表す場合があります
  • クエリ コンポーネントは、「キー = 値」のペアの形式で識別情報を運ぶためによく使用され、頻繁に使用される値の 1 つは別の URI への参照であるため、これらの文字のパーセント エンコーディングを避ける方が使いやすい場合があります。

関連する質問は次のとおりです。 クエリ文字列: クエリ文字列には、クエリ文字列も含む URL を含めることができますか?

于 2011-04-17T02:35:24.653 に答える
2

問題が発生したことはありませんが、RFC 2396に従って技術的に許可されていません。

クエリ コンポーネント内では、文字「;」、「/」、「?」、「:」、「@」、「&」、「=」、「+」、「,」、および「$」は予約されています。

しかし、私が言ったように...私は問題に遭遇したことはありません。何よりも古いブラウザの問題だと思いますが、誰かがこれが引き起こす問題にもう少し光を当てることができますか?

于 2010-02-03T00:04:36.470 に答える
1

スラッシュは、 RFC 2396セクション 3.4 によるURL のクエリ部分の「予約文字」であるため、セクション 2.2 に従ってエンコードする必要があります。つまり、クエリ部分には を含めることができます%2Fが、含めるべきではありません/

于 2010-02-03T00:07:35.263 に答える