Файлы cookie не отображаются на вкладке Chrome с помощью Apollo. - PullRequest
0 голосов
/ 17 февраля 2020

Я использую сервер 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

Вся помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...