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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
---
title: Access-Control-Allow-Headers
slug: Web/HTTP/Headers/Access-Control-Allow-Headers
tags:
- CORS
- Cabeçalho de Resposta
- HTTP
- Reference
- cabeçalho
- header
translation_of: Web/HTTP/Headers/Access-Control-Allow-Headers
---
<div>{{HTTPSidebar}}</div>
<p>O cabeçalho de resposta <strong><code>Access-Control-Allow-Headers</code></strong> é usado na resposta à uma {{glossary("preflight request")}} na qual incluí o cabeçalho {{HTTPHeader("Access-Control-Request-Headers")}} para indicar quais cabeçalhos HTTP podem ser utilizados durante a requisição efetiva.</p>
<p>Este cabeçalho é obrigatório se a requisição tem um cabeçalho {{HTTPHeader("Access-Control-Request-Headers")}}.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Tipo de cabeçalho</th>
<td>{{Glossary("Response header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>não</td>
</tr>
</tbody>
</table>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox">Access-Control-Allow-Headers: <em><nome-do-cabeçalho></em>[, <em><nome-do-cabeçalho></em>]*
Access-Control-Allow-Headers: *
</pre>
<h2 id="Diretivas">Diretivas</h2>
<dl>
<dt><code><nome-do-cabeçalho></code></dt>
<dd>O nome de um cabeçalho suportado. O cabeçalho pode listar qualquer quantidade de cabeçalhos, desde que sejam separados por vírgula.</dd>
<dt><code>*</code> (coringa)</dt>
<dd>O valor "<code>*</code>" só conta como um valor coringa para requisições sem credenciais (requisições sem <a href="/en-US/docs/Web/HTTP/Cookies">cookies HTTP</a> ou informação de autenticação HTTP). Em requisições com credenciais, isso é tratado como o nome de cabeçalho literal "<code>*</code>" sem qualquer semântica especial. Note que o cabeçalho {{HTTPHeader("Authorization")}} não pode utilizar um coringa e sempre precisa ser listado explicitamente.</dd>
</dl>
<p>Os cabeçalhos {{glossary("CORS-safelisted_request_header", "CORS-safelisted request headers")}}, {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Language")}}, {{HTTPHeader("Content-Language")}}, {{HTTPHeader("Content-Type")}} são sempre permitidos e não precisam ser listados por este cabeçalho necessariamente. Entretanto, note que restrições adicionais são aplicadas com estes cabeçalhos envolvidos por listar estes cabeçalhos no cabeçalho <code>Access-Control-Allow-Headers</code> também.</p>
<h2 id="Exemplos">Exemplos</h2>
<h3 id="Um_cabeçalho_customizado">Um cabeçalho customizado</h3>
<p>Aqui está um exemplos de como um cabeçalho <code>Access-Control-Allow-Headers</code> pode se parecer. Isso indica que em adição aos <em>CORS-safelisted request headers</em>, um cabeçalho customizado chamado <code>X-Custom-Header</code> é suportado por requisições CORS pelo servidor.</p>
<pre>Access-Control-Allow-Headers: X-Custom-Header</pre>
<h3 id="Múltiplos_cabeçalhos">Múltiplos cabeçalhos</h3>
<p>Este exemplo mostra o cabeçalho <code>Access-Control-Allow-Headers</code> quando é especificado para suportar diversos cabeçalhos.</p>
<pre>Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests</pre>
<h3 id="Burlando_restrições_adicionais">Burlando restrições adicionais</h3>
<p>Apesar de que {{glossary("CORS-safelisted_request_header", "CORS-safelisted request headers")}} são sempre permitidos e geralmente não precisam ser listados no cabeçalho <code>Access-Control-Allow-Headers</code>, listá-los de qualquer forma irá envolver as <a href="/en-US/docs/Glossary/CORS-safelisted_request_header#Additional_restrictions">restrições adicionais</a> que são aplicadas.</p>
<pre>Access-Control-Allow-Headers: Accept</pre>
<h3 id="Exemplo_de_requisição_pré-vôo">Exemplo de requisição pré-vôo</h3>
<p>Vamos dar uma olhada em um exemplo de requisição pré-vôo envolvendo o cabeçalho <code>Access-Control-Allow-Headers</code>.</p>
<h4 id="Requisição">Requisição</h4>
<p>Primeiro, a requisição. A requisição pré-vôo é uma requisição {{HTTPMethod("OPTIONS")}} que inclui algumas combinações de três cabeçalhos de requisições pré-vôo: {{HTTPHeader("Access-Control-Request-Method")}}, {{HTTPHeader("Access-Control-Request-Headers")}}, e {{HTTPHeader("Origin")}}, como por exemplo:</p>
<pre>OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org</pre>
<h4 id="Resposta">Resposta</h4>
<p>Se o servidor permite requisições CORS para usar o método {{HTTPMethod("DELETE")}}, ele responde com um cabeçalho de resposta {{HTTPHeader("Access-Control-Allow-Methods")}}, no qual lista <code>DELETE</code> junto à outros métodos suportados:</p>
<pre>HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400</pre>
<p>Se o método requisitado não é suportado, o servidor irá responder com um erro.</p>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificação</th>
<th scope="col">Status</th>
<th scope="col">Comentário</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('Fetch','#http-access-control-allow-headers', 'Access-Control-Allow-Headers')}}</td>
<td>{{Spec2("Fetch")}}</td>
<td>Definição inicial</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2>
<div class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div>
<p>{{Compat("http.headers.Access-Control-Allow-Headers")}}</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li>{{HTTPHeader("Access-Control-Allow-Origin")}}</li>
<li>{{HTTPHeader("Access-Control-Expose-Headers")}}</li>
<li>{{HTTPHeader("Access-Control-Allow-Methods")}}</li>
<li>{{HTTPHeader("Access-Control-Request-Headers")}}</li>
</ul>
|