0

リダイレクトを送信しながら、このページが200を返すようにしたい...

<script>
    sub page_load
        'Get the parameters
         dim content As String
         content = request.querystring("text")
         response.redirect ("http://100.200.100.10/test1/Default.aspx?CommandParm=" + content)
    end sub
</script>
<html>
    <head>
    </head>
    <body>
        <form runat="server">
        </form>
    </body>
</html>
4

4 に答える 4

2

@まぶたのない@

使いやすさの悪い選択のように思えることに同意しますが、直接修正できない問題の回避策になることを願っています.

その場合は、 META refreshを試してください。

<meta http-equiv="refresh" content="5;url=http://example.com/"/>

このページにたどり着いた不運なユーザーに何が起こっているかを説明するメッセージを埋め込みます。

質問を投稿するときに、おそらく自分自身を説明していませんでした。これは実際には B2B トランザクションです。ブラウザを持っているエンドユーザーはいません。サードパーティが HTTP GET を送信します。私たちがしたいのは、それを正当な取引として転送することだけです。

次に、301 または 302 を送信する必要があります。これが、彼らが処理するように設計された正確な目的です。

于 2008-10-28T10:00:38.990 に答える
1

このページをjavascriptでリダイレクトすることができます

まず、次の文字列を作成して動的JavaScriptを作成します

<script type"text/javascript">
<!--
function redirect()
{
   window.location = "http://100.200.100.10/test1/Default.aspx?CommandParm=" + content
}
//-->
</script>

次に、現在のページのヘッダーにjavascriptを追加します。

次に、JavaScriptを本文に追加します

mybody.Attributes.Add("onload", "redirect()");

現在のページを参照すると、HTTP 200が返され、onloadイベントが発生した後、ブラウザーはredirect()を呼び出し、参照はターゲットページに表示されます。

なぜこれが必要なのか興味がありますか?!

于 2008-10-28T06:10:49.017 に答える
1

リダイレクトとステータス 200 の両方を持つことはできません。

RFC2616は、ステータス コード 200について次のように述べています。

10.2.1 200OK

リクエストは成功しました。応答で返される情報は、要求で使用されるメソッドによって異なります。たとえば、次のようになります。

  • GET : 要求されたリソースに対応するエンティティが応答で送信されます。
  • HEAD : 要求されたリソースに対応するエンティティ ヘッダー フィールドは、メッセージ本文なしで応答で送信されます。
  • POST : アクションの結果を記述または含むエンティティ。
  • TRACE : エンド サーバーが受信した要求メッセージを含むエンティティ。

そのため、JavaScript などのユーザー エージェントによって解釈されるコンテンツをブラウザーに送信する以外に、リダイレクトする余地はありません。

これは、ステータス コード 301、302、または 303 を使用したリダイレクトについて説明する仕様の一部です。

10.3.2 301 恒久的に移動

要求されたリソースには新しい永続的な URI が割り当てられており、このリソースへの今後の参照では、返された URI のいずれかを使用する必要があります。リンク編集機能を持つクライアントは、可能であれば、Request-URI への参照をサーバーから返された 1 つ以上の新しい参照に自動的に再リンクする必要があります。特に明記しない限り、この応答はキャッシュ可能です。

新しい永続的な URI は、応答の Location フィールドで指定する必要があります。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。

GET または HEAD 以外のリクエストへの応答として 301 ステータス コードを受信した場合、ユーザーが確認できない限り、ユーザー エージェントはリクエストを自動的にリダイレクトしてはなりません。これにより、リクエストが発行された条件が変更される可能性があるためです。

注: 301 ステータス コードを受け取った後に POST リクエストを自動的にリダイレクトする場合、一部の既存の HTTP/1.0 ユーザー エージェントはそれを誤って GET リクエストに変更します。

10.3.3 302 見つかりました

要求されたリソースは、一時的に別の URI に存在します。リダイレクトは場合によって変更される可能性があるため、クライアントは今後のリクエストに対して引き続き Request-URI を使用する必要があります。この応答は、Cache-Control または Expires ヘッダー フィールドで示されている場合にのみキャッシュ可能です。

一時的な URI は、応答の Location フィールドで指定する必要があります。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。

GET または HEAD 以外のリクエストに応答して 302 ステータス コードを受信した場合、ユーザーが確認できない限り、ユーザー エージェントはリクエストを自動的にリダイレクトしてはなりません。これにより、リクエストが発行された条件が変更される可能性があるためです。

注: RFC 1945 および RFC 2068 では、リダイレクトされた要求でクライアントがメソッドを変更することは許可されていないと規定されています。ただし、ほとんどの既存のユーザー エージェント実装は、302 を 303 応答であるかのように扱い、元の要求メソッドに関係なく、Location フィールド値に対して GET を実行します。ステータス コード 303 および 307 は、クライアントに期待される反応の種類を明確に明らかにしたいサーバー用に追加されました。

10.3.4 303 その他を参照

リクエストへのレスポンスは別の URI で見つけることができ、そのリソースで GET メソッドを使用して取得する必要があります。このメソッドは主に、POST でアクティブ化されたスクリプトの出力がユーザー エージェントを選択したリソースにリダイレクトできるようにするために存在します。新しい URI は、最初に要求されたリソースの代替参照ではありません。303 応答はキャッシュしてはなりませんが、2 番目の (リダイレクトされた) 要求に対する応答はキャッシュ可能かもしれません。

応答の Location フィールドで別の URI を指定する必要があります (SHOULD)。リクエスト メソッドが HEAD でない限り、レスポンスのエンティティには、新しい URI へのハイパーリンクを含む短いハイパーテキスト ノートを含める必要があります。

注: 多くの HTTP/1.1 以前のユーザー エージェントは 303 ステータスを理解していません。このようなクライアントとの相互運用性が懸念される場合は、代わりに 302 ステータス コードを使用できます。これは、ほとんどのユーザー エージェントが 303 についてここで説明されているように 302 応答に反応するためです。

于 2008-11-03T20:12:11.570 に答える
0

まさかResponse.Redirect()。おもう。たぶん、作品Response.Status = "200 OK"を呼んだ後に設定しRedirect()て、私は試したことがありません。

それ以外の場合は空の応答で「Location」ヘッダーを手動で設定することにより、それを偽造することができます。しかし、それが何に役立つのかはわかりません。;-)

Response.AddHeader("Location", "http://100.200.100.10/test1/Default.aspx?CommandParm=" + content)
Response.End()

(そして、記録のために:あなたは無効なHTTPヘッダーコンステレーションを生成するでしょう。何も壊してはいけませんが、それでも。)

于 2008-10-28T06:00:04.623 に答える