2

次の問題があります。

ユーザーがテキストを連結して、GET メソッドを介して ASP ページにパラメーターを渡す URL を作成できるアプリケーションを使用しています。つまり、次のようなものです。

http://myhostname/process.asp?param1=value1&param2=value2

問題は、value1 と value2 に、テキスト文字として解釈されないアンパサンド記号を含めることができることです。

この問題に対する最も一般的な解決策は、URL をエンコードすることですが、URL を作成するプログラムを変更できないため、私にはオプションではありません。process.asp ページは変更できますが、テキスト フィールドを連結して URL を作成するプログラムは変更できません。

私が検索しようとしたものは次のとおりです。

  • ブラウザで直接 JavaScript を使用して URL をエンコードする方法

  • & を読み取るときに IIS の既定の動作を変更する方法

  • パラメータを渡す別の方法、つまりパイプで区切られた単一の文字列としてパラメータを渡す方法

ご指導いただければ幸いです。

4

2 に答える 2

1

次のように、クエリ文字列全体を読み取って自分で解析できます。

  q = Request.QueryString
  a = Split(q, "=")
  i = 1
  For Each s In a
    If i mod 2 = 0 Then
      If InStr(s, "&") <> InStrRev(s, "&") Then
        Response.Write "Value: " & Left(s, InStrRev(s, "&") - 1) & "<br/>"
        hidingParam = Right(s, Len(s) - InStrRev(s, "&"))
        Response.Write "PAramName: " & hidingParam & "<br/>"
        i = i + 1
      Else
        Response.Write "Value: " & s & "<br/>"
      End If
    Else
      Response.Write "PAramName: " & s & "<br/>"
    End If
    i = i + 1
  Next


結果:

URL:...?Q=abc&def&P=123プロデュース

PAramName: Q
値: abc&def
PAramName: P
値: 123

これは堅牢ではないことに注意してください。私は自分の考えを説明しているだけです。no でテストしませんでし&た。

また、複数の「=」文字も処理しません (可能であれば)。

于 2013-03-25T04:42:34.253 に答える
-1

等号の間に 2 つ (またはそれ以上) のアンパサンドがある場合、最後の 1 つだけがパラメーター区切り文字になります。したがって、上記の URL を使用し、 value1 = " abc&def "、およびvalue2 = " 123 "と仮定すると、URL は次のようになります。

http://myhostname/process.asp?param1=abc&def&param2=123

2 つの等号の間に 2 つのアンパサンドがあることに注意してください。最後の 1 つはパラメーターの区切り記号で、残りは値の一部です。また、最後の等号の後のアンパサンドも値の一部です。

着信 URL を分析し、適切なロジックを適用する必要があります。

于 2013-03-25T03:25:35.833 に答える