Я использую apollo-server-express, и все работает нормально.У меня есть 2 конечные точки - 1 для graphiql (/ graphql) и одна для неинтерактивных (/ client) запросов (я знаю - они назывались так до того, как я начал с apollo).
app.use('/client', bodyParser.json() ,
(req, res,next) => {
const context = { pool , apiKey:req.query.key , bidules };
if (server.isAuthorized(context.apiKey)) {
return graphqlExpress({
schema: schema,
context: context,
tracing: true,
cacheControl: {
defaultMaxAge: 30,
}
}) (req,res,next);
}
else {
res.setHeader('Content-Type', 'application/json');
res.status(403)
.send (JSON.stringify({
errors:[ {message: "api key is unauthorized"} ]
}));
}
}
);
// endpoint for browser graphIQL
app.use('/graphql', graphiqlExpress({
endpointURL: '/client'
}));
app.use("/schema", (req, res) => {
res.set("Content-Type", "text/plain");
res.send(printSchema(schema));
});
Но когдаЯ представляю движок apollo
engine.listen({
port: port,
expressApp: fidserver.app,
graphqlPaths: ['/graphql', '/client']
});
все по-прежнему работает нормально - за исключением случаев, когда я обновляю graphiql в браузере с запросом в качестве параметров в URL браузера.
Затем я получаю эту ошибку
{"errors":[{"message":"Unsupported Content-Type from origin: text/html"}]}
То же самое при работе двигателя apollo не вызывает ошибку.Если снова выполнить запрос или обновить браузер без параметров запроса и переменных, все работает нормально, с включенным или не включенным Apollo Engine.
При возникновении ошибки я вижу из журнала сервера, что он пытается вернутьотреагировать веб-страницу, содержащую некоторый javascript для декодирования параметров откуда-то, но я не могу отследить откуда - это не так далеко, как попадание в любой мой код.