Я использую сервер apollo и клиент apollo с React. При входе в систему я хочу установить cook ie, но он не отображается на вкладке приложения в Chrome
index.ts на сервере
const express = require('express');
const mongoose = require('mongoose');
const graphQLHttp = require('express-graphql');
const { ApolloServer } = require('apollo-server-express');
const httpHeadersPlugin = require("apollo-server-plugin-http-headers");
const dotenv = require('dotenv');
const cors = require('cors');
const typeDefs = require('./typeDefs');
const resolvers = require('./resolvers');
dotenv.config();
const PORT = process.env.PORT || 5000;
const app = express();
const server = new ApolloServer({
typeDefs,
resolvers,
context: ({ res }) => {
return { res };
}
});
const corsOptions = {
origin: 'http://localhost:3000',
credentials: true // <-- REQUIRED backend setting
};
app.use(cors(corsOptions));
app.listen(PORT, () => {
console.log('Connecting the server', PORT)
})
server.applyMiddleware({ app, cors: { origin: 'http://localhost:3000' } });
mongoose.connect(process.env.MONGOLAB_URI, { useNewUrlParser: true, useUnifiedTopology: true });
Index.tsx в клиенте
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from "react-router-dom";
import './index.css';
import App from './App';
import { Provider } from 'react-redux'
import store from './redux/store'
import { ApolloClient } from 'apollo-client';
import { createHttpLink } from "apollo-link-http";
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloProvider } from '@apollo/react-hooks';
const link = createHttpLink({
uri: 'http://localhost:5000/graphql',
credentials: 'same-origin'
});
const client = new ApolloClient({
cache: new InMemoryCache(),
link
});
ReactDOM.render(
<ApolloProvider client={client}>
<BrowserRouter>
<Provider store={store}>
<App />
</Provider>
</BrowserRouter>
</ApolloProvider>,
document.getElementById('root'));
И в моем запросе я настраиваю его так:
res.cookie('token', token, {
httpOnly: true,
secure: process.env.NODE_ENV = 'production',
maxAge: 1000 * 60 * 60 * 24 * 7 //7 days
})
В моем реальном запросе на вкладке Сеть я вижу запрос и готовлю ie. Он также имеет заголовок
Set-Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkFsbGFuMTEiLCJpYXQiOjE1ODE5NjI5MTd9.2vuUB1tko5S8VEQVqjkF4ftVz-pzWMwX0Sq42YHnHG0; Max-Age=604800; Path=/; Expires=Mon, 24 Feb 2020 18:08:37 GMT; HttpOnly; Secure
Сервер работает на порту 5000, клиент - на 3000
Вся помощь будет оценена.