Отказ от ответственности:
Как было сказано ранее @feroze, установка домена cookie на localhost не будет работать для вас так хорошо. Я предполагаю, что вы пишете помощника, который позволяет вам туннелировать HTTP-запросы на чужие домены. Обратите внимание, что это не лучшая практика и во многих случаях не требуется (т. Е. jQuery имеет много классной междоменной поддержки, встроенной , также см. Новую спецификацию CORS ). Но иногда вы можете застрять в этом (т. Е. Внешним ресурсом является только XML и он находится на сервере, который не поддерживает CORS).
Справочная информация о доменах cookie и о том, как они работают:
Если вы еще не взглянули на HTTP Cookie: домен и путь в Википедии - там есть почти все, что вам нужно знать.
При оценке файла cookie домен и путь учитываются и клиентом («локальный» запросчик) и веб-сервером («сторонний» ответчик) , Когда клиент запрашивает ресурс, клиент должен отправлять файлы cookie только в тех случаях, когда эти файлы cookie соответствуют домену (или более общему родительскому домену ) и пути (или более общему родительскому пути) из запрашиваемый URI.
Веб-браузеры обрабатывают это правильно. Если в веб-браузере есть файл cookie для домена «localhost», и вы запрашиваете, например, «google.com», эти файлы cookie для домена «localhost» не будут отправлены в запросе на «google.com». - Фактически, большинство современных браузеров не просто не отправляют их, они полностью игнорируют их в заголовках ответов Set-Cookie, которые они получают (они называются сторонними cookie-файлами - что позволяет принимать сторонние cookie-файлы в вашем веб-браузер - серьезная проблема конфиденциальности / безопасности - не делайте этого!).
Он работает и в другом направлении - даже если клиент вряд ли включит сторонний cookie в запрос, если он это сделает, иностранный веб-сервер должен его игнорировать (и даже некоторые cookie для правильного домены / пути, чтобы предотвратить печально известную проблему super-cookie . (т. е. веб-сервер, на котором размещен "example.com", должен игнорировать файлы cookie, принадлежащие его родительскому домену: ".com", потому что ".com "это" публичный суффикс ")).
Что делать [если нужно]:
Действия, которые я рекомендую для вас, - это когда вы читаете в куки вашего клиента (я не парень MVC, но в обычном ASP.NET это было бы в Request.Cookies), просматривайте их (убедитесь, что чтобы отфильтровать законные куки-файлы вашего собственного сайта, особенно SessionId и т. д. - или правильно использовать Path, чтобы они никогда не отправлялись на эту страницу в первую очередь), а затем добавлять их по одному в коллекцию cookie исходящего запроса, переписывая домен быть "www.whwhat.com" (в вашем примере - если вы делаете это динамически, загрузите URL-адрес в новый объект Uri () и используйте свойство .Host), а затем установите для пути значение "/" , - Это создаст заголовок «Cookie» для исходящего запроса на сторонний веб-сервер.
Когда этот запрос возвращается на ваш сервер, вам необходимо проверить его входящий ответ на наличие новых файлов cookie - эти файлы cookie могут быть переупакованы и отправлены обратно вашему клиенту в цикле, аналогично тому, который я иллюстрировал в предыдущем параграфе. за исключением того, что вы захотите переписать Host, чтобы он был Request.Url.Host - и вы захотите установить путь обратно на "/", если путь к вашей промежуточной странице не является статическим (я предполагаю, что это не так вы используете MVC), то вы хотите установить его, например, в Request.Url.AbsolutePath.
Счастливого кодирования!
EDIT:
Кроме того, вы захотите установить тег X-Forwarded-For исходящего запроса, чтобы вызываемый вами веб-сайт не думал, что ваш веб-сервер - это единственный клиент, который рассылает спам. из них.