Как передать заголовки Cookie из gatsby-source-graphql?
Я использую gatsby-source-graphql (https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-graphql), и недавно мне пришлось использовать AWS Cloudfront Signed Cookies для авторизации пользователей. чтобы получить доступ к частной промежуточной среде, по этой причине запросы к конечной точке graphql, обрабатываемые плагином, должны иметь cookie-файл в заголовке запроса, который я делаю следующим образом:
{
resolve: 'gatsby-source-graphql',
options: {
cookie: 'var1=val1; var2=val2; '
}
}
Выше не удается,
ServerParseError: Unexpected token < in JSON at position 0
Если отключить подписанные файлы cookie и сделать конечную точку общедоступной, это сработает.
И, если я снова оставлю это в секрете и протестирую с помощью curl, будет работать:
curl --cookie 'var1=val1; var2=val2; ' graphql_endpoint.com
Я попытался выяснить, почему заголовок Cookie не пропущен, но кажется, что проблема в другом плагине, который используется в плагине выше, называется 'apollo-link-http' (https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-graphql/src/gatsby-node.js)
Между тем,просматривая ссылку apollo-http-link (https://www.apollographql.com/docs/link/links/http/) и сообщаемую здесь проблему (https://github.com/apollographql/apollo-client/issues/4455),), я пытался:
{
resolve: 'gatsby-source-graphql',
options: {
typeName: 'FOOBAR',
fieldName: 'foobar',
createLink: (pluginOptions) => {
return createHttpLink({
uri: process.env.GATSBY_GRAPHQL_API_URL,
credentials: 'include',
headers: {
cookie: "CloudFront-Policy=xxxxx_; CloudFront-Key-Pair-Id=xxxxx; CloudFront-Signature=xxxxxxxxxx; path=/;",
},
fetch,
})
},
}
},
Без успеха, та же ошибка, что и раньше.
Также пытался использовать параметры извлечения дляr node-fetch,
{
resolve: 'gatsby-source-graphql',
options: {
typeName: 'FOOBAR',
fieldName: 'foobar',
url: process.env.GATSBY_GRAPHQL_API_URL,
fetchOptions: {
credentials: 'include',
headers: {
cookie: "CloudFront-Policy=xxxxx_; CloudFront-Key-Pair-Id=xxxxx; CloudFront-Signature=xxxxxxxxxx; path=/;",
},
},
}
},
Как вы видите fetchOptions здесь (https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-graphql/src/gatsby-node.js)
Нет успеха! Это, вероятно, ошибка.