9

POST メソッドを使用する場合、URL (疑問符の後) を介して Web ページにパラメーターを渡すことはできますか? 私の会社のwebappが頻繁にそれを行うので、それが機能することは知っていますが、実際に標準でサポートされているかどうか、またはこの動作に依存できるかどうかはわかりません。疑問符の後にパラメーターを使用して、それが SOAP 要求であり、通常の HTTP 要求ではないことを示す SOAP 要求ハンドラーの実装を検討しています。この理由は、webapp が IIS 拡張機能であるため、すべてが同じ URL (例: example.com/myisapi.dll?command) を介してアクセスされるため、SOAP 要求を処理するには、「コマンド」パラメータ。SOAP 用の汎用コマンドが 1 つあります。

基本的に、Apache Axis2/C ライブラリを webapp に統合しようとしています。これは、webapp に HTTP 要求を処理させ、受信 SOAP XML を Axis2 に渡して、それが SOAP 要求である場合に処理させます。さまざまなコンポーネントに関する限り、投稿先の URL は単なる任意の URL であるため、直観的には、これが機能しない理由はわかりません... に特別な意味を与えるのはサーバーですクエスチョンマークの後の部分。

あなたが提供できる助け/洞察に感謝します。

4

5 に答える 5

7

簡単なものから始めましょう。HTTPGETリクエスト変数はURIから取得されます。URIは要求されたリソースであるため、すべてのWebサーバーURI全体をWebサーバー内で実行されているモジュールまたはappserverコンポーネントで使用可能な変数に格納する必要があります(そしてapacheはそうします)。

httpGETとは異なるhttpPOSTは、Webサーバーへの個別の論理呼び出しですが、それでもPOSTを処理するURIを定義します。優れたWebサーバー(Apacheが1つ)は、その中で実行されているモジュールまたはアプリサーバーがURIを利用できるようにし、さらにPOSTヘッダーで送信された変数を利用できるようにします。

POST中にアプリケーションがapacheから制御を取得する時点で、GET変数とPOST変数の両方にアクセスでき、HTMLではなくSOAPプロトコルで応答するなど、必要な制御ロジックを実行できる必要があります。

于 2008-11-04T19:10:09.370 に答える
3

1つのHTTPリクエストでGETとPOSTの両方を介してパラメータを送信できるかどうかを尋ねる場合、答えは「はい」です。これは、AFAIKで確実に使用できる標準機能です。

そのような例の1つは、認証資格情報をGET経由とPOST経由の2つに分けて送信することです。これにより、セッションをハイジャックしようとすると、GET変数とPOST変数の両方をハイジャックする必要があります。

したがって、あなたの場合、POSTを使用して実際のSOAPリクエストを含めることができますが、GETで(つまりURLを介して)渡されたパラメーターに基づいてSOAPリクエストであるかどうかをテストします。

于 2008-11-04T19:02:55.937 に答える
3

「HTTP パラメータ」または「リクエスト変数」の概念を実際に定義している標準はないと思います。RFC 1738 では、URL に「検索部分」を含めることができると定義しています。これは、疑問符の後の部分文字列です。HTML は、フォーム送信プロトコルで、FORM 要素を処理するブラウザーがそれを送信する方法を指定します。どちらの場合でも、サーバー側が検索部分と HTTP 本文の両方を処理する方法は完全にサーバー次第です。両方を破棄すると、これら 2 つの仕様に準拠することになります (ただし、ほとんど役に立ちません)。

特定のサービスに検索パーツを投稿できるかどうかを判断するには、そのサービスのプロトコル仕様を検討する必要があります。サービスが実質的に HTML フォームを使用して定義されている場合は、混在は使用できません。FORM が GET を指定している場合は、POST を使用することさえできません (逆も同様です)。Web サービスに投稿する場合は、Web サービスの WSDL を確認する必要があります。これは通常、POST を義務付けます。SOAP メッセージ内のすべてのデータを使用します。等。

特定の Web フレームワークには「リクエスト変数」の概念がある場合があります。これらの変数を検索部分とリクエスト本文の両方から取得するかどうかは、製品ドキュメントで確認する必要があります。

于 2008-11-04T19:26:03.363 に答える
2

英国で3(モバイルネットワークオペレーター)を使用してWebアプリケーションを展開しました。元々はPOSTパラメーターを使用していましたが、3つのゲートウェイがそれらを削除しました(Xヘッダーも同様です!)。だから注意してください...

于 2008-11-04T19:02:59.870 に答える
2

許容できますか?確かに、それは実行可能ですが、私は、デュアルメソッドが必ずしも発生する、またはサポートされるとは限らないことを示唆する仕様に傾いています。RFC2616はHTTP/1.1を定義しており、リクエストごとに1つのメソッドのみを提案していると私は主張します。クライアント側からの典型的なHTTPトランザクションについて考えると、制限もわかります。

$ telnet localhost 80
POST /page.html?id=5 HTTP/1.1
host: localhost

ご覧のとおり、使用できるメソッドは1つ(POST / GETなど)のみですが、さまざまな言語の動作の性質上、クエリ文字列を取得してGET変数に割り当てる場合があります。ただし、最終的にはこれはPOSTリクエストであり、GETではありません。

つまり、基本的に、この機能は存在しますが、それは意図されたものですか私はノーと言うでしょう。

于 2008-11-04T19:06:23.403 に答える