aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/headers/set/index.html
blob: fb6f47723832c684523b0f5deeb34eb05a09d31e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
---
title: Headers.set()
slug: Web/API/Headers/set
translation_of: Web/API/Headers/set
---
<div>{{APIRef("Fetch")}}</div>

<p><strong><code><a href="https://developer.mozilla.org/en-US/docs/Web/API/Headers">headers</a></code></strong>接口中 <strong><code>set()</code></strong> 方法在可以在已经声明中的<code><strong>headers</strong></code>对象修改已有的一组键值对或者创建一个新的键值对。</p>

<p><strong><code>set()</code></strong> 方法和 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Headers/append">append()</a>方法不同的是声明的<strong><code>Headers</code></strong>对象是否已经存在对应的<strong><code>keys</code></strong>是否已经存在并且已经赋值。<strong><code>set()</code></strong> 方法将会覆盖之前的<strong><code>value</code></strong>,然而 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Headers/append">append()</a>方法只会在<strong><code>Headers</code></strong>对象的尾部添加一个新的键值对。</p>

<p>为了安全策略,一些 <strong><code>Headers</code></strong>对象中的键值对只能客户端去控制。这些<strong><code>key</code></strong>包括<a href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name">Forbidden response header name</a> 和 <a href="https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_response_header_name">Forbidden responese header names</a> 。</p>

<h2 id="语法">语法</h2>

<pre class="syntaxbox"><em>myHeaders</em>.set(<em>name</em>, <em>value</em>);</pre>

<h3 id="参数">参数</h3>

<dl>
 <dt><code>name</code></dt>
 <dd><strong><code>name</code></strong>就是需要对HTTP header 设置新值的key, 一般为字符串。如果设置的<strong><code>name</code></strong> 不是HTTP header规范里面规定的name,那么将会抛出错误"TypeError"。</dd>
 <dt><code>value</code></dt>
 <dd> <strong><code>value </code></strong>就是 <strong><code>name </code></strong>对应的值。</dd>
</dl>

<h3 id="返回">返回</h3>

<p>Void.</p>

<h2 id="Example">Example</h2>

<p>创建一个新的 <code>Headers</code> 对象:</p>

<pre class="brush: js">var myHeaders = new Headers(); // Currently empty</pre>

<p>你可以用<a href="https://developer.mozilla.org/en-US/docs/Web/API/Headers/append">append()</a>方法给<code>Headers</code> 对象增添一个新的键值对,然后用<code><strong>set()</strong></code>方法去改变这个键值对:</p>

<pre class="brush: js">myHeaders.append('Content-Type', 'image/jpeg');
myHeaders.set('Content-Type', 'text/html');
</pre>

<p>如果这个键值对不存在,那么<strong><code>set()</code></strong>方法首先创建一个键值对,然后给它赋值。如果这个键值对存在,那么<code><strong>set()</strong></code>方法将会覆盖之前的<strong><code>value</code></strong>值:</p>

<pre class="brush: js">myHeaders.set('Accept-Encoding', 'deflate');
myHeaders.set('Accept-Encoding', 'gzip');
myHeaders.get('Accept-Encoding'); // Returns 'gzip'</pre>

<p>如果你需要增加一个键值对,而不是要覆盖之前的键值对,那么你需要用<a href="https://developer.mozilla.org/en-US/docs/Web/API/Headers/append">append()</a>方法。</p>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('Fetch','#dom-headers-set','set()')}}</td>
   <td>{{Spec2('Fetch')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>



<p>{{Compat("api.Headers.set")}}</p>

<h2 id="See_also">See also</h2>

<ul>
 <li><a href="/en-US/docs/Web/API/ServiceWorker_API">ServiceWorker API</a></li>
 <li><a href="/en-US/docs/Web/HTTP/Access_control_CORS">HTTP access control (CORS)</a></li>
 <li><a href="/en-US/docs/Web/HTTP">HTTP</a></li>
</ul>