私のWeb APIでは、POSTリクエストを充実させて別のURLに転送しています。 ポストマンはポストリクエストの作成に使用されます。HttpRequestでホストヘッダーを変更すると、サーバーの応答に影響するのはなぜですか?
操作:要求は支払い・サーバに転送されhttp://private.store.internal/api/pay
にPOST。テストのために私が指定した「www.google.com」は、要求が転送されなければならないURLとして
var newRequest = new HttpRequestMessage(HttpMethod.Post, request.DesiredDestination);
var response = await httpClient.SendAsync(newRequest, cancellation);
(もちろんポスト要求に何を行うことができない)私は、「newRequest」変数ヘッダを検査する場合コレクションには、「API」がホストされているURLの値を保持する「ホスト」フィールドが含まれています。
private.store.internal
予想通りこれは、Googleのサーバから返されたヘッダは、次のとおりです。
"responseHeaders": [
{
"key": "Referrer-Policy",
"value": [ "no-referrer" ]
},
{
"key": "Alt-Svc",
"value": ["quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\""]
},
{
"key": "Date",
"value": ["Wed, 25 Oct 2017 12:15:57 GMT" ]
},
{
"key": "Content-Length",
"value": ["1561"]
},
{
"key": "Content-Type",
"value": ["text/html; charset=UTF-8"]
}
],
"content": "<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n <title>Error 404 (Not Found)!!1</title>\n <style>\n...
今、私はAPIは、(実際の)支払サーバにホストされている情報を転送しませんので、私は単に "ホスト"フィールドを削除しました:
しかし、これは要求が転送されるサーバーの動作を変更します。 応答は
"responseHeaders": [
{
"key": "X-XSS-Protection",
"value": ["1; mode=block"]
},
{
"key": "X-Frame-Options",
"value": ["SAMEORIGIN"]
},
{
"key": "Alt-Svc",
"value": ["quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\""]
},
{
"key": "Date",
"value": ["Wed, 25 Oct 2017 12:18:52 GMT"]
},
{
"key": "Server",
"value": ["gws"]
},
{
"key": "Content-Length",
"value": ["1589"]
},
{
"key": "Allow",
"value": ["GET","HEAD"]
},
{
"key": "Content-Type",
"value": ["text/html; charset=UTF-8"]
}
],
"content": "<!DOCTYPE html>\n<html lang=en>\n <meta charset=utf-8>\n <meta name=viewport content=\"initial-scale=1, minimum-scale=1, width=device-width\">\n <title>Error 405 (Method Not Allowed)!!1
であり、全く異なっています。私の質問は:なぜ私のAPIが呼び出しているホストプロパティを変更/削除するとWebサーバーの応答が変わるのですか?
「newRequest.Headers.Remove( "Host"); 'を実行する必要があると思われる理由をさらに詳しく説明できますか? – mjwills
私は決済プロバイダ(サードパーティのAPI)がどこからコールされているのか知りたくありません。私は内部サーバーの名前を公開したくありません。 – HannesB
削除する前にHostヘッダーの値は何ですか? – mjwills