Думаю, я чего-то не понимаю. Я пытаюсь подключить мой apollo-клиент localhost:8000
к своему бэкэнду localhost:4000
, с клиентом и сервером в разных доменах. Я использую apollo (apollo-boost
) на внешнем интерфейсе и express-graphql
на серверном ( not (!) Apollo-server ).
Когда я отправляю некоторые данные для входа изклиент на сервер, я получаю ответ: объект пользователя или ошибки и т. д. Так что это здорово. Тем не менее, пользователь на самом деле никогда не входит в систему на сервере (когда я проверяю graphiql и запрашиваю объект пользователя, он всегда равен нулю).
Я не знаю, является ли это проблемой CORS, поскольку используемые вещиработать, когда у меня и клиент и сервер в одном домене?
Вот код на стороне клиента:
import ApolloClient from "apollo-boost"
import fetch from "isomorphic-fetch"
import { HttpLink } from "apollo-link-http"
import { InMemoryCache } from "apollo-cache-inmemory"
const cache = new InMemoryCache()
const link = new HttpLink({
// uri: "http://localhost:4000/graphql",
credentials: "include",
})
export const client = new ApolloClient({
cache,
fetch,
link,
dataIdFromObject: o => o.id,
uri: "http://localhost:4000/graphql",
})
Соответствующие биты на сервере:
app.use(
session({
resave: true,
saveUninitialized: true,
secret: 'whatever',
cookie: {
secure: false
},
store: new MongoStore({
url: MONGO_URI,
autoReconnect: true
})
})
);
var corsOptions = {
origin: 'http://localhost:8000',
credentials: true
};
app.use(cors(corsOptions));
app.use(passport.initialize());
app.use(passport.session());
// Instruct Express to pass on any request made to the '/graphql' route
// to the GraphQL instance.
app.use(
'/graphql',
expressGraphQL({
schema,
graphiql: true
})
);