aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/http/headers/set-cookie/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/web/http/headers/set-cookie/index.html')
-rw-r--r--files/ru/web/http/headers/set-cookie/index.html193
1 files changed, 193 insertions, 0 deletions
diff --git a/files/ru/web/http/headers/set-cookie/index.html b/files/ru/web/http/headers/set-cookie/index.html
new file mode 100644
index 0000000000..d7822a1790
--- /dev/null
+++ b/files/ru/web/http/headers/set-cookie/index.html
@@ -0,0 +1,193 @@
+---
+title: Set-Cookie
+slug: Web/HTTP/Заголовки/Set-Cookie
+translation_of: Web/HTTP/Headers/Set-Cookie
+---
+<div>
+<p>{{HTTPSidebar}}</p>
+
+<p>HTTP заголовок <strong><code>Set-Cookie</code></strong> используется для отправки cookies с сервера на агент пользователя.</p>
+
+<p>Для детальной информации, смотрите руководство по  <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a>.</p>
+
+<table>
+ <tbody>
+ <tr>
+ <th scope="row">Тип заголовка</th>
+ <td>{{Glossary("Response header")}}</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Forbidden header name")}}</th>
+ <td>нет</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="notranslate">Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Expires=&lt;date&gt;
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Max-Age=&lt;non-zero-digit&gt;
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Domain=&lt;domain-value&gt;
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Path=&lt;path-value&gt;
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Secure
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; HttpOnly
+
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; SameSite=Strict
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; SameSite=Lax
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; SameSite=None {{experimental_inline}}
+
+// Multiple directives are also possible, for example:
+Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Domain=&lt;domain-value&gt;; Secure; HttpOnly
+</pre>
+
+<h2 id="Директивы">Директивы</h2>
+
+<ul>
+ <li>По умолчанию - хост текущего URL документа, не включая поддомены</li>
+ <li>В текущей спецификация начальная точка в имени хоста игнорируется (<code>.example.com</code>)</li>
+ <li>Cookie будут отправляться также на поддомены указанного хоста</li>
+ <li>Указывать несколько хостов недопустимо.</li>
+</ul>
+
+<ul>
+ <li>По умолчанию - хост текущего URL документа, не включая поддомены</li>
+ <li>В текущей спецификация начальная точка в имени хоста игнорируется (.example.com)</li>
+ <li>Cookie будут отправляться также на поддомены указанного хоста</li>
+ <li>Указывать несколько хостов недопустимо.</li>
+</ul>
+
+<dl>
+ <dt><code>&lt;cookie-name&gt;=&lt;cookie-value&gt;</code></dt>
+ <dd>Cookie начинается с пары имя-значение:
+ <ul>
+ <li><code>&lt;cookie-name&gt;</code> может содержать любые символы US-ASCII, за исключением управляющих символов (CTLs), пробелов, или табуляций. Оно также не должно содержать разделительнных символов, таких как следующие: <code>( ) &lt; &gt; @ , ; : \ " /  [ ] ? = { }</code>.</li>
+ <li><code>&lt;cookie-value&gt;</code> может быть опционально заключено в двойные кавычки,   разрешены любые символы US-ASCII за исключением CTLs, пробела, двойных кавычек, запятой, точки с запятой, и обратного слэша. <strong>Кодирование:</strong> Многие реализации выполняют кодирование в значениях cookies, однако этого не требуется по спецификации RFC.  Однако, это помогает удовлетворить требование о разрешенных символах в &lt;cookie-value&gt;.</li>
+ <li><strong><code>__Secure-</code> prefix</strong> {{non-standard_inline}}: Cookies с именем, начинающимся с  <code> __Secure-</code> (подчеркивание является частью префикса ) должны быть установлены вместе с флагом secure, и должны быть с безопасной страницы (HTTPS).</li>
+ <li><strong><code>__Host-</code> prefix</strong> {{non-standard_inline}}: Cookies с именем, начинающимся с <code>__Host-</code> должны быть установлены с флагом secure <code>secure</code>, должны быть с безопасной страницы (HTTPS),  не должны иметь определенный домен (и, следовательно, не не посылаются поддоменами), а также параметр Path должен быть "/".</li>
+ </ul>
+ </dd>
+ <dt><code>Expires=&lt;date&gt;</code> {{optional_inline}}</dt>
+ <dd>
+ <p>Максимальное время жизни cookie в формате метки даты-времени HTTP.  См. {{HTTPHeader("Date")}} о деталях формата  Если не определен, cookie будет иметь время жизни <strong>сессионного cookie.   </strong>Сессия окончена, когда клиент отключается, что приводит к удалению сессионных cookie в этот момент. Однако, многие браузеры имеют возможность, называемую восстановление сессии, которая сохраняет все ваши вкладки и затем возвращает их, когда вы в следующий раз запускаете браузер. Cookies будут также присутствовать, словно вы никогда не закрывали браузер.</p>
+
+ <p>Когда установливается срок действия, время и дата устанавливаются не относитеьно сервера, а относительно клиента, на котором установлено cookie,</p>
+ </dd>
+ <dt><code>Max-Age=&lt;number&gt; </code>{{optional_inline}}</dt>
+ <dd>Количество секунд, после которого cookie устаревает.  Ноль или отрицательное число приводят к моментальному устареванию cookie. Старые браузеры (ie6, ie7, and ie8) не поддерживают Max-Age.  Для прочих браузеров, если оба параметра (<code>Expires</code> and <code>Max-Age</code>) установлены, <code>Max-Age</code> будет иметь преимущество.</dd>
+ <dt><code>Domain=&lt;domain-value&gt;</code> {{optional_inline}}</dt>
+ <dd>Хост, на который будут отправляться cookie.<br>
+ <br>
+ По умолчанию - хост текущего URL документа, не включая поддомены<br>
+ В текущей спецификация начальная точка в имени хоста игнорируется (.example.com)<br>
+ Cookie будут отправляться также на поддомены указанного хоста<br>
+ Указывать несколько хостов недопустимо.</dd>
+ <dt><code>Path=&lt;path-value&gt;</code> {{optional_inline}}</dt>
+ <dd>Путь, который должен существовать в запрошенном URL, иначе браузер не отправит заголовок Cookie.</dd>
+ <dd>Пример: <code>/</code> - cookie будет отправляться со всеми запросами<br>
+ Пример: <code>/docs/</code> - cookie будет отправляться с запросами к директории docs и ее поддиректориям</dd>
+ <dt><code>Secure</code> {{optional_inline}}</dt>
+ <dd>Cookie будет отправлен на сервер только с запросами c использованием SSL и протокола HTTPS.<br>
+ <br>
+ Cookie не будет дополнительно шифроваться, поэтому в нем не стоит хранить конфиденциальную инфомрацию.</dd>
+ <dd>
+ <p><strong>Note:</strong> небезопасные сайты (<code>http:</code>) не могут использовать cookie с атрибутом "secure" (начиная с Chrome 52+ и Firefox 52+).</p>
+ </dd>
+ <dt><code>HttpOnly</code> {{optional_inline}}</dt>
+ <dd>Запрещает JavaScript доступ к cookie</dd>
+ <dd>Полезно для защиы от XSS-атак.</dd>
+ <dt><code>SameSite=&lt;samesite-value&gt;</code> {{optional_inline}}</dt>
+</dl>
+
+<ul>
+ <li><code>Strict</code>: The browser sends the cookie only for same-site requests (that is, requests originating from the same site that set the cookie). If the request originated from a different URL than the current one, no cookies with the <code>SameSite=Strict</code> attribute are sent.</li>
+ <li><code>Lax</code>: The cookie is withheld on cross-site subrequests, such as calls to load images or frames, but is sent when a user navigates to the URL from an external site, such as by following a link</li>
+ <li><code>None</code>: The browser sends the cookie with both cross-site and same-site requests</li>
+</ul>
+
+<dl>
+ <dd>
+ <p>Allows servers to assert that a cookie ought not to be sent along with cross-site requests, which provides some protection against cross-site request forgery attacks ({{Glossary("CSRF")}}).</p>
+
+ <p>Современные браузеры используют <code>SameSite=Lax</code>. Если необходима работа <code>SameSite=</code><code>None</code> cookie должна быть установлена с атрибутом <code>Secure</code>.</p>
+ </dd>
+</dl>
+
+<h2 id="Примеры">Примеры</h2>
+
+<h3 id="Сессионный_cookie">Сессионный cookie</h3>
+
+<p>Сессионные cookies будут удалены после отключения клиента. В них не указываются директивы <code>Expires</code> или <code>Max-Age</code>. Учитывайте, что часто в браузере включено восстановление сессии.</p>
+
+<pre class="notranslate">Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/</pre>
+
+<h3 id="Постоянный_cookie">Постоянный cookie</h3>
+
+<p>Вместо истечения срока действия, когда клиент закрыт, срок действия постоянных файлов cookie истекает в определенную дату (<code>Expires</code>) или по истечении определенного промежутка времени (<code>Max-Age</code>).</p>
+
+<pre class="notranslate">Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly
+</pre>
+
+<h3 id="Неверные_домены">Неверные домены</h3>
+
+<p>Файл cookie, принадлежащий домену, который не включает исходный сервер, <a href="https://tools.ietf.org/html/rfc6265#section-4.1.2.3">должен быть отклонен пользовательским</a>. Следующий cookie будет отклонен, если он был установлен сервером, размещенным на originalcompany.com.</p>
+
+<pre class="notranslate">Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk; Path=/; Expires=Wed, 30 Aug 2019 00:00:00 GMT</pre>
+
+<h3 id="Cookie_prefixes">Cookie prefixes</h3>
+
+<p>Cookies names with the prefixes <code>__Secure-</code> and <code>__Host-</code> can be used only if they are set with the <code>secure</code> directive from a secure (HTTPS) origin. In addition, cookies with the <code>__Host-</code> prefix must have a path of "/" (the entire host) and must not have a domain attribute. For clients that don't implement cookie prefixes, you cannot count on having these additional assurances and the cookies will always be accepted.</p>
+
+<pre class="notranslate">// Both accepted when from a secure origin (HTTPS)
+Set-Cookie: __Secure-ID=123; Secure; Domain=example.com
+Set-Cookie: __Host-ID=123; Secure; Path=/
+
+// Rejected due to missing Secure directive
+Set-Cookie: __Secure-id=1
+
+// Rejected due to the missing Path=/ directive
+Set-Cookie: __Host-id=1; Secure
+
+// Rejected due to setting a domain
+Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com
+</pre>
+
+<h2 id="Specifications">Specifications</h2>
+
+<table>
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ <tr>
+ <td>{{RFC("6265", "Set-Cookie", "4.1")}}</td>
+ <td>HTTP State Management Mechanism</td>
+ </tr>
+ <tr>
+ <td><a href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02">draft-ietf-httpbis-rfc6265bis-02</a></td>
+ <td>Cookie Prefixes, Same-Site Cookies, and Strict Secure Cookies</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.headers.Set-Cookie")}}</p>
+
+<h2 id="Compatibility_notes">Compatibility notes</h2>
+
+<ul>
+ <li>Starting with Chrome 52 and Firefox 52, insecure sites (<code>http:</code>) can't set cookies with the "secure" directive anymore.</li>
+</ul>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a></li>
+ <li>{{HTTPHeader("Cookie")}}</li>
+ <li>{{domxref("Document.cookie")}}</li>
+</ul>
+</div>