Estou tentando entender como usar o CORS e estou confuso sobre o que o Access-Control-Allow-Credentials
cabeçalho faz.
A documentação diz
Indica se a resposta à solicitação pode ou não ser exposta quando o sinalizador de credenciais for verdadeiro.
Mas não entendo o que significa a resposta "exposta".
Alguém pode explicar o que esse cabeçalho sendo definido como verdadeiro (em conjunto com o sinalizador de credenciais definido como verdadeiro) realmente faz?
http-headers
cors
Nate
fonte
fonte
Respostas:
Por padrão, o CORS não inclui cookies em solicitações de origem cruzada. Isso é diferente de outras técnicas de origem cruzada, como JSON-P. O JSON-P sempre inclui cookies com a solicitação, e esse comportamento pode levar a uma classe de vulnerabilidades chamada falsificação de solicitação entre sites ou CSRF.
Para reduzir a chance de vulnerabilidades do CSRF no CORS, o CORS exige que o servidor e o cliente reconheçam que não há problema em incluir cookies nas solicitações. Isso faz dos cookies uma decisão ativa, em vez de algo que acontece passivamente sem nenhum controle.
O código do cliente deve definir a
withCredentials
propriedade noXMLHttpRequest
paratrue
para conceder permissão.No entanto, esse cabeçalho por si só não é suficiente. O servidor deve responder com o
Access-Control-Allow-Credentials
cabeçalho. Responder a esse cabeçalhotrue
significa que o servidor permite que cookies (ou outras credenciais do usuário) sejam incluídas em solicitações de origem cruzada.Você também precisa garantir que seu navegador não esteja bloqueando cookies de terceiros, se desejar que as solicitações com credenciais de origem cruzada funcionem.
Observe que, independentemente de você estar fazendo solicitações de mesma origem ou de origem cruzada, é necessário proteger seu site do CSRF (especialmente se sua solicitação incluir cookies).
fonte
withCredentials
estiver definido, mas quando receber a resposta, se withCredentials estiver definido, ele somente entregará / exporá o resultado ao javascript de chamada se a resposta tiver o Access Conjunto de cabeçalhos -Control-Allow-Credentials. Se não houver cabeçalho, ele não expõe a resposta, efetivamente colocando-a em preto.