O antigo ApolloClient passava cookies automaticamente.
HttpLink, BatchHttpLink usa apollo-fetch, que usa isomorphic-fetch. Por padrão, isomorphic-fetch não envia cookies.
A solução alternativa atual é bastante complicada:
const uri = '/api/graphql';
// by default, apollo-link-http doesn't send cookies
const customFetch = (uri, options) =>
fetch(uri, {
...options,
credentials: 'same-origin',
});
// create an apollo fetch instance with our hacked fetch instance
const apolloFetch = createApolloFetch({
uri,
customFetch,
});
const link = new BatchHttpLink({ uri, fetch: apolloFetch })
Este problema pode ser resolvido de várias maneiras:
1) poderíamos habilitá-lo por padrão para imitar a versão antiga
2) poderíamos adicionar outra opção para apollo-link-http e apollo-link-batch-http, chamada fetchOption
, para que pudéssemos fazer algo como
const fetchOptions = {
credentials: 'same-origin',
};
const link = new BatchHttpLink({ uri, fetchOptions });
Estou disposto a fazer a correção + os testes, só preciso de ajuda para descobrir para que lado queremos ir :-)
Resultado pretendido:
Os cookies devem ser enviados ao fazer uma solicitação
Resultado real:
Nenhum cookie está sendo enviado
Bleh, duplicado de # 44
Desculpa!
Não tenho certeza se esta é realmente uma duplicata completa de # 44. Esse problema abordou apenas HttpLink
, não BatchHttpLink
. Ainda precisamos usar a mesma solução alternativa até que BatchHttpLink
seja atualizado para também oferecer suporte às credenciais.
Podemos reabrir esse problema até que BatchHttpLink também seja resolvido?
+1 para @mjfaga , estou tendo o mesmo problema com BatchHttpLink
Concordo, este ainda é um problema em aberto para o lote 👍
Parece que outro problema foi aberto para este # 343, vou religar isso.
Comentários muito úteis
+1 para @mjfaga , estou tendo o mesmo problema com BatchHttpLink