免責事項:
@feroze が以前に述べたように、Cookie のドメインを localhost に設定してもうまくいきません。HTTP リクエストを外部ドメインにトンネリングできるヘルパーを作成していると仮定しています。これはベスト プラクティスではなく、多くの場合は不要であることに注意してください (つまり、jQuery には多くの優れたクロスドメイン サポートが組み込まれています。新しいCORS 仕様も参照してください)。ただし、これを行うと行き詰まる場合があります (つまり、外部リソースが XML のみであり、CORS をサポートしないサーバー上にある場合)。
Cookie ドメインとその仕組みに関する背景情報:
ウィキペディアの HTTP Cookie: Domain and Path をまだ見ていない場合は、知っておく必要のあるほとんどすべての情報がそこにあります。
Cookie を評価するとき、ドメインとパスは、クライアント (「ローカル」リクエスター) と Web サーバー (「外部」レスポンダー) の両方で考慮されます。クライアントがリソースを要求するとき、クライアントは、要求されている URI の Domain (またはより一般的な親 domain ) および Path (またはより一般的な親パス) と一致する Cookie のみを送信する必要があります。
Web ブラウザはこれを正しく処理します。たとえば、Web ブラウザにドメイン「localhost」の Cookie があり、「google.com」をリクエストしている場合、「localhost」ドメインの Cookie はリクエストで「google.com」に送信されません。-- 実際、最新のブラウザのほとんどは、それらを送信しないだけでなく、受信した Set-Cookie 応答ヘッダーでそれらを完全に無視します (これらはサードパーティ Cookie と呼ばれます。 Web ブラウザーを使用することは、プライバシー/セキュリティ上の大きな懸念事項です。使用しないでください!)。
それは他の方向にも機能します-クライアントがリクエストにサードパーティのCookieを含める可能性は低いですが、含まれている場合、外部Webサーバーはそれを無視することになっています(正しいドメイン/パスのCookieでさえも)悪名高いスーパー Cookie の問題を防ぐため (つまり、「example.com」をホストする Web サーバーは、その親ドメイン「.com」に属する Cookie を無視する必要があります。「.com」は「パブリック サフィックス」であるためです))。 .
あなたがしなければならないこと[しなければならない場合]:
私がお勧めする一連のアクションは、クライアントの Cookie (私は MVC の専門家ではありませんが、通常の ASP.NET ではこれは Request.Cookies にあります) を読み取るときに、それらをループ処理することです (必ずフィルターで除外してください)。独自のサイトの正当な Cookie、特に SessionId など -- または Path を適切に使用して、最初からこのページに送信されないようにします)、送信リクエストの Cookie コレクションに一度に 1 つずつ追加し、ドメインを「 www.whatever.com" (あなたの例によると、これを動的に行う場合は、URL を新しい Uri() オブジェクトにロードし、.Host プロパティを使用します)、Path を "/" に設定します。-- これにより、外部 Web サーバーへの発信要求の「Cookie」ヘッダーが作成されます。
そのリクエストがサーバーに返されたら、新しい Cookie の着信応答を確認する必要があります。これらの Cookie は、前の段落で説明したのとほぼ同じタイプのループで再パッケージ化してクライアントに送り返すことができます。 Host を Request.Url.Host に書き換えたいと思うでしょう -- そして、パススルー ページへのパスが静的でない限り、パスを "/" に戻す必要があります (あなたがMVC を使用する場合)、たとえば Request.Url.AbsolutePath に設定する必要があります。
ハッピーコーディング!
編集:
また、送信リクエストのX-Forwarded-Forタグを設定して、呼び出している Web サイトが、Web サーバーがそれらからスパムを送信している単一のクライアントであると認識しないようにする必要があります。