Access-Control-Allow-Credentials

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

O cabeçalho de resposta Access-Control-Allow-Credentials diz aos navegadores se a resposta deve ser exposta ao código frontend JavaScript quando o modo de credenciais da requisição (Request.credentials) é include.

Quando o modo de credenciais da requisição (Request.credentials) é include, navegadores vão somente expor a resposta ao código frontend JavaScript se o valor de Access-Control-Allow-Credentials for true.

Credenciais são cookies, cabeçalhos de autorização ou certificados de cliente TLS.

Quando usado como parte de uma resposta a uma requisição pré-vôo (preflight), isso indica se a requisição atual vai ou não ser feita usando credenciais. Note que uma simples requisição 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.

O cabeçalho Access-Control-Allow-Credentials funciona em conjunto com a propriedade XMLHttpRequest.withCredentials ou com a opção credentials na construtor da Request() na Fetch API. Para requisições CORS com credenciais, para que os navegadores exponham a resposta ao código frontend JavaScript, ambos o servidor (usando o cabeçalho Access-Control-Allow-Credentials) 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.

Tipo de cabeçalho Response header
Forbidden header name não

Sintaxe

Access-Control-Allow-Credentials: true

Diretivas

true

O único valor válido para este cabeçalho é true (case-sensitive). Se você não precisa de credenciais, omita este cabeçalho inteiramente (ao invés de colocar seu valor para false).

Exemplos

Permitindo credenciais:

Access-Control-Allow-Credentials: true

Usando XHR com credenciais:

js
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/", true);
xhr.withCredentials = true;
xhr.send(null);

Usando Fetch com credenciais:

js
fetch(url, {
  credentials: "include",
});

Especificações

Specification
Fetch Standard
# http-access-control-allow-credentials

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também