HttpCookie.Secure = true;
В documentation for HttpCookie.Secure property состояния:
Получает или задает значение, указывающее, следует ли передавать куки с помощью Secure Sockets Layer (SSL) - то есть, более чем только HTTPS.
Это сбивает с толку.
Основополагающая истина заключается в том, что cookie будет всегда отправляться клиенту независимо от того, является ли соединение безопасным или нет.
Это необходимо по двум основным причинам. Во-первых, ваши серверы приложений могут находиться за брандмауэром/NLB, который имеет сертификат SSL для вашего веб-сайта для достижения SSL offloading, а во-вторых, вы можете отображать свой веб-сайт через незащищенное соединение (веб-сайт с частичным представлением входа) и отправить регистрационную форму обратно через безопасное соединение и может потребовать, чтобы одно из ваших файлов cookie было передано обратно, только если соединение безопасно.
Дело в том, что это действует только на стороне клиента. Браузеры решат, следует ли отправлять cookie обратно или нет, в зависимости от протокола связи, выбранного для текущего запроса.
Вот что я использую безопасные куки-файлы по незащищенному соединению.
Response Haders:
Response HTTP/1.1 200 OK
Cache-Control private
Content-Type text/html; charset=utf-8
Server Microsoft-IIS/8.0
Set-Cookie ASP.NET_SessionId=xxwcvdn22lietdqtvirucxzv; path=/; secure; HttpOnly
X-AspNet-Version 4.0.30319
Set-Cookie My=My Cookie Value; path=/; secure
X-Powered-By ASP.NET
Date Fri, 27 Nov 2015 13:14:00 GMT
Content-Length 510
А на пост обратно:
Request Headers:
Request GET /Default2.aspx HTTP/1.1
Accept text/html, application/xhtml+xml, */*
Accept-Language tr-TR
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding gzip, deflate
Host localhost:59442
DNT 1
Connection Keep-Alive
Таким образом, Вы не должны указать HttpCookie.Secure = true;
для среды разработки, или в любой среде (тест, preprod, ветками и т.д.), которая не поддерживает SSL. Это означает наличие разных файлов web.config для этих сред, что в любом случае является обязательным, если вы сохраняете строку подключения и т. Д. В файле web.config.
Ответ на ваш вопрос будет, да, она должна работать на условиях, когда веб-сайт доступен через защищенное соединение (HTTPS)
Вы можете проверить, является ли печенье отправляется обратно или нет с инструменты разработчика вашего любимого браузера для любой среды.
@guz Ozgul, благодарю вас за подробный ответ (+1). Я, вероятно, отмечу это как принятый ответ, я просто хочу подождать до вторника, когда версия будет загружена на производство, и убедитесь, что все работает так, как ожидалось. – DimaK
Добро пожаловать. Прежде чем приступать к работе, убедитесь, что вы тестируете приложение с помощью SSL. Получение временного сертификата SSL легко и бесплатно –