Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js cookie与Postman一起显示在节点控制台中,而不是与浏览器一起显示_Node.js_Reactjs_Cookies_Axios - Fatal编程技术网

Node.js cookie与Postman一起显示在节点控制台中,而不是与浏览器一起显示

Node.js cookie与Postman一起显示在节点控制台中,而不是与浏览器一起显示,node.js,reactjs,cookies,axios,Node.js,Reactjs,Cookies,Axios,我使用Postman和browser对我的节点API执行了同样的查询。节点控制台使用postman显示cookie的良好值,未使用browser定义。我使用axion进行查询 router.post('/auth', function(req, res, next){ var token = jwt.sign(payload, secretWord, { expiresIn : '24h'

我使用Postman和browser对我的节点API执行了同样的查询。节点控制台使用postman显示cookie的良好值,未使用browser定义。我使用axion进行查询

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
这是我在前端的代码(React):

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
以下是我在API节点中的代码:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
对于Postman,令牌显示在控制台中,我可以看到cookie集

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
使用浏览器时,我没有定义,也没有任何cookie

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
编辑:知道react应用程序正在端口3000上运行,节点API正在端口3001上运行。所以起源不一样

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
编辑:我试图在route/auth中将console.log(req)写入node.js服务器,我得到:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
IncomingMessage {
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 16384,
     buffer: BufferList { head: null, tail: null, length: 0 },
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: true,
     ended: true,
     endEmitted: true,
     reading: false,
     sync: false,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     destroyed: false,
     defaultEncoding: 'utf8',
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: false,
  domain: null,
  _events: {},
  _eventsCount: 0,
  _maxListeners: undefined,
  socket:
   Socket {
     connecting: false,
     _hadError: false,
     _handle:
      TCP {
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        onconnection: null,
        writeQueueSize: 0,
        _consumed: true },
     _parent: null,
     _host: null,
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [Object],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        destroyed: false,
        defaultEncoding: 'utf8',
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events:
      { end: [Array],
        finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        drain: [Array],
        timeout: [Function: socketOnTimeout],
        data: [Function: bound socketOnData],
        error: [Function: socketOnError],
        close: [Array],
        resume: [Function: onSocketResume],
        pause: [Function: onSocketPause] },
     _eventsCount: 10,
     _maxListeners: undefined,
     _writableState:
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     allowHalfOpen: true,
     _bytesDispatched: 374,
     _sockname: null,
     _pendingData: null,
     _pendingEncoding: '',
     server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _idleTimeout: 120000,
     _idleNext:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idlePrev:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idleStart: 6444,
     _destroyed: false,
     parser:
      HTTPParser {
        '0': [Function: parserOnHeaders],
        '1': [Function: parserOnHeadersComplete],
        '2': [Function: parserOnBody],
        '3': [Function: parserOnMessageComplete],
        '4': [Function: bound onParserExecute],
        _headers: [],
        _url: '',
        _consumed: true,
        socket: [Circular],
        incoming: [Circular],
        outgoing: null,
        maxHeaderPairs: 2000,
        onIncoming: [Function: bound parserOnIncoming] },
     on: [Function: socketOnWrap],
     _paused: false,
     _httpMessage:
      ServerResponse {
        domain: null,
        _events: [Object],
        _eventsCount: 1,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: false,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: true,
        useChunkedEncodingByDefault: true,
        sendDate: true,
        _removedConnection: false,
        _removedContLen: false,
        _removedTE: false,
        _contentLength: null,
        _hasBody: true,
        _trailer: '',
        finished: false,
        _headerSent: false,
        socket: [Circular],
        connection: [Circular],
        _header: null,
        _onPendingData: [Function: bound updateOutgoingData],
        _sent100: false,
        _expect_continue: false,
        req: [Circular],
        locals: {},
        [Symbol(outHeadersKey)]: [Object] },
     _peername: { address: '::1', family: 'IPv6', port: 62328 },
     [Symbol(asyncId)]: 67,
     [Symbol(bytesRead)]: 0,
     [Symbol(asyncId)]: 69,
     [Symbol(triggerAsyncId)]: 67 },
  connection:
   Socket {
     connecting: false,
     _hadError: false,
     _handle:
      TCP {
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        onconnection: null,
        writeQueueSize: 0,
        _consumed: true },
     _parent: null,
     _host: null,
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [Object],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        destroyed: false,
        defaultEncoding: 'utf8',
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events:
      { end: [Array],
        finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        drain: [Array],
        timeout: [Function: socketOnTimeout],
        data: [Function: bound socketOnData],
        error: [Function: socketOnError],
        close: [Array],
        resume: [Function: onSocketResume],
        pause: [Function: onSocketPause] },
     _eventsCount: 10,
     _maxListeners: undefined,
     _writableState:
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     allowHalfOpen: true,
     _bytesDispatched: 374,
     _sockname: null,
     _pendingData: null,
     _pendingEncoding: '',
     server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _idleTimeout: 120000,
     _idleNext:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idlePrev:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idleStart: 6444,
     _destroyed: false,
     parser:
      HTTPParser {
        '0': [Function: parserOnHeaders],
        '1': [Function: parserOnHeadersComplete],
        '2': [Function: parserOnBody],
        '3': [Function: parserOnMessageComplete],
        '4': [Function: bound onParserExecute],
        _headers: [],
        _url: '',
        _consumed: true,
        socket: [Circular],
        incoming: [Circular],
        outgoing: null,
        maxHeaderPairs: 2000,
        onIncoming: [Function: bound parserOnIncoming] },
     on: [Function: socketOnWrap],
     _paused: false,
     _httpMessage:
      ServerResponse {
        domain: null,
        _events: [Object],
        _eventsCount: 1,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: false,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: true,
        useChunkedEncodingByDefault: true,
        sendDate: true,
        _removedConnection: false,
        _removedContLen: false,
        _removedTE: false,
        _contentLength: null,
        _hasBody: true,
        _trailer: '',
        finished: false,
        _headerSent: false,
        socket: [Circular],
        connection: [Circular],
        _header: null,
        _onPendingData: [Function: bound updateOutgoingData],
        _sent100: false,
        _expect_continue: false,
        req: [Circular],
        locals: {},
        [Symbol(outHeadersKey)]: [Object] },
     _peername: { address: '::1', family: 'IPv6', port: 62328 },
     [Symbol(asyncId)]: 67,
     [Symbol(bytesRead)]: 0,
     [Symbol(asyncId)]: 69,
     [Symbol(triggerAsyncId)]: 67 },
  httpVersionMajor: 1,
  httpVersionMinor: 1,
  httpVersion: '1.1',
  complete: true,
  headers:
   { host: 'localhost:3001',
     connection: 'keep-alive',
     'content-length': '38',
     accept: 'application/json',
     origin: 'http://localhost:3000',
     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
     'content-type': 'application/json;charset=UTF-8',
     referer: 'http://localhost:3000/connexion',
     'accept-encoding': 'gzip, deflate, br',
     'accept-language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' },
  rawHeaders:
   [ 'Host',
     'localhost:3001',
     'Connection',
     'keep-alive',
     'Content-Length',
     '38',
     'Accept',
     'application/json',
     'Origin',
     'http://localhost:3000',
     'User-Agent',
     'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
     'Content-Type',
     'application/json;charset=UTF-8',
     'Referer',
     'http://localhost:3000/connexion',
     'Accept-Encoding',
     'gzip, deflate, br',
     'Accept-Language',
     'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' ],
  trailers: {},
  rawTrailers: [],
  upgrade: false,
  url: '/auth',
  method: 'POST',
  statusCode: null,
  statusMessage: null,
  client:
   Socket {
     connecting: false,
     _hadError: false,
     _handle:
      TCP {
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        onconnection: null,
        writeQueueSize: 0,
        _consumed: true },
     _parent: null,
     _host: null,
     _readableState:
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [Object],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: true,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        destroyed: false,
        defaultEncoding: 'utf8',
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events:
      { end: [Array],
        finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        drain: [Array],
        timeout: [Function: socketOnTimeout],
        data: [Function: bound socketOnData],
        error: [Function: socketOnError],
        close: [Array],
        resume: [Function: onSocketResume],
        pause: [Function: onSocketPause] },
     _eventsCount: 10,
     _maxListeners: undefined,
     _writableState:
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     allowHalfOpen: true,
     _bytesDispatched: 374,
     _sockname: null,
     _pendingData: null,
     _pendingEncoding: '',
     server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _server:
      Server {
        domain: null,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _connections: 1,
        _handle: [Object],
        _usingSlaves: false,
        _slaves: [],
        _unref: false,
        allowHalfOpen: true,
        pauseOnConnect: false,
        httpAllowHalfOpen: false,
        timeout: 120000,
        keepAliveTimeout: 5000,
        _pendingResponseData: 0,
        maxHeadersCount: null,
        _connectionKey: '6::::3001',
        [Symbol(asyncId)]: 8 },
     _idleTimeout: 120000,
     _idleNext:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idlePrev:
      TimersList {
        _idleNext: [Circular],
        _idlePrev: [Circular],
        _timer: [Object],
        _unrefed: true,
        msecs: 120000,
        nextTick: false },
     _idleStart: 6444,
     _destroyed: false,
     parser:
      HTTPParser {
        '0': [Function: parserOnHeaders],
        '1': [Function: parserOnHeadersComplete],
        '2': [Function: parserOnBody],
        '3': [Function: parserOnMessageComplete],
        '4': [Function: bound onParserExecute],
        _headers: [],
        _url: '',
        _consumed: true,
        socket: [Circular],
        incoming: [Circular],
        outgoing: null,
        maxHeaderPairs: 2000,
        onIncoming: [Function: bound parserOnIncoming] },
     on: [Function: socketOnWrap],
     _paused: false,
     _httpMessage:
      ServerResponse {
        domain: null,
        _events: [Object],
        _eventsCount: 1,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: false,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: true,
        useChunkedEncodingByDefault: true,
        sendDate: true,
        _removedConnection: false,
        _removedContLen: false,
        _removedTE: false,
        _contentLength: null,
        _hasBody: true,
        _trailer: '',
        finished: false,
        _headerSent: false,
        socket: [Circular],
        connection: [Circular],
        _header: null,
        _onPendingData: [Function: bound updateOutgoingData],
        _sent100: false,
        _expect_continue: false,
        req: [Circular],
        locals: {},
        [Symbol(outHeadersKey)]: [Object] },
     _peername: { address: '::1', family: 'IPv6', port: 62328 },
     [Symbol(asyncId)]: 67,
     [Symbol(bytesRead)]: 0,
     [Symbol(asyncId)]: 69,
     [Symbol(triggerAsyncId)]: 67 },
  _consuming: true,
  _dumped: false,
  next: [Function: next],
  baseUrl: '',
  originalUrl: '/auth',
  _parsedUrl:
   Url {
     protocol: null,
     slashes: null,
     auth: null,
     host: null,
     port: null,
     hostname: null,
     hash: null,
     search: null,
     query: null,
     pathname: '/auth',
     path: '/auth',
     href: '/auth',
     _raw: '/auth' },
  params: {},
  query: {},
  res:
   ServerResponse {
     domain: null,
     _events: { finish: [Function: bound resOnFinish] },
     _eventsCount: 1,
     _maxListeners: undefined,
     output: [],
     outputEncodings: [],
     outputCallbacks: [],
     outputSize: 0,
     writable: true,
     _last: false,
     upgrading: false,
     chunkedEncoding: false,
     shouldKeepAlive: true,
     useChunkedEncodingByDefault: true,
     sendDate: true,
     _removedConnection: false,
     _removedContLen: false,
     _removedTE: false,
     _contentLength: null,
     _hasBody: true,
     _trailer: '',
     finished: false,
     _headerSent: false,
     socket:
      Socket {
        connecting: false,
        _hadError: false,
        _handle: [Object],
        _parent: null,
        _host: null,
        _readableState: [Object],
        readable: true,
        domain: null,
        _events: [Object],
        _eventsCount: 10,
        _maxListeners: undefined,
        _writableState: [Object],
        writable: true,
        allowHalfOpen: true,
        _bytesDispatched: 374,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: [Object],
        _server: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: 6444,
        _destroyed: false,
        parser: [Object],
        on: [Function: socketOnWrap],
        _paused: false,
        _httpMessage: [Circular],
        _peername: [Object],
        [Symbol(asyncId)]: 67,
        [Symbol(bytesRead)]: 0,
        [Symbol(asyncId)]: 69,
        [Symbol(triggerAsyncId)]: 67 },
     connection:
      Socket {
        connecting: false,
        _hadError: false,
        _handle: [Object],
        _parent: null,
        _host: null,
        _readableState: [Object],
        readable: true,
        domain: null,
        _events: [Object],
        _eventsCount: 10,
        _maxListeners: undefined,
        _writableState: [Object],
        writable: true,
        allowHalfOpen: true,
        _bytesDispatched: 374,
        _sockname: null,
        _pendingData: null,
        _pendingEncoding: '',
        server: [Object],
        _server: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: 6444,
        _destroyed: false,
        parser: [Object],
        on: [Function: socketOnWrap],
        _paused: false,
        _httpMessage: [Circular],
        _peername: [Object],
        [Symbol(asyncId)]: 67,
        [Symbol(bytesRead)]: 0,
        [Symbol(asyncId)]: 69,
        [Symbol(triggerAsyncId)]: 67 },
     _header: null,
     _onPendingData: [Function: bound updateOutgoingData],
     _sent100: false,
     _expect_continue: false,
     req: [Circular],
     locals: {},
     [Symbol(outHeadersKey)]:
      { 'access-control-allow-origin': [Array],
        vary: [Array],
        'access-control-allow-credentials': [Array],
        'access-control-allow-headers': [Array],
        'access-control-allow-methods': [Array],
        'x-dns-prefetch-control': [Array],
        'x-frame-options': [Array],
        'strict-transport-security': [Array],
        'x-download-options': [Array],
        'x-content-type-options': [Array],
        'x-xss-protection': [Array],
        'set-cookie': [Array] } },
  body: { name: 'CHARLAT', password: '184628' },
  _body: true,
  length: undefined,
  read: [Function],
  route: Route { path: '/auth', stack: [ [Object] ], methods: { post: true } } }
编辑:这不是CORS问题。我试图以不安全模式打开chrome以禁用CORS。同样的结果,我的cookie没有定义。

这是一个错误。方案、url和端口应匹配,以便浏览器正确设置cookie

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
要解决此问题,您有多个选项-

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
1.在同一端口上装载react app和express。 从同一端口上运行的同一express代码库交付react应用程序。 比如说,
app.get(“/app”,reactApp)
交付react应用程序,而
app.get(“/api/*”,apicall)
交付api调用

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
2.使用像NGINX这样的反向代理 您可以使用反向代理(如NGINX)在端口80/443上运行网站,并让它路由到不同的端口,为react应用程序提供服务并提供api调用。这在生产中是一个好主意,因为前端交付可能有不同于API服务器的扩展要求。理想情况下,nginx本身应该对您的应用程序做出反应。当您使用客户端路由时,事情会变得有点复杂,但这仍然是首选方法

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
3.使用CORS 这是可能的,但如果您不知道自己在做什么,则不建议这样做。只有当您明确需要CORS时,才应启用CORS。要启用cors,对您的用例执行
app.use(cors())
应该足够了

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
    app.use(cors({ origin:true, credentials:true }));

    // prevent CORS problems
    app.use(function (req, res, next) {
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
        res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
        res.header('Access-Control-Allow-Credentials', true);
        next();
    })
^第二部分(代码在//prevent CORS problems下)只是第一部分的工作。

我找到了窍门

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
这不是CORS的问题。因为我试着用Chrome来启动它——禁用网络安全,没有改变

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
我还尝试在axios和fetch之间进行切换,但也没有任何变化

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
它工作的唯一方法是使用cookie解析器,而不是cookie库。通过写一篇简单的文章:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
res.cookie('user_token', token, { signed: true, httpOnly: true })
然后,要获取令牌,您需要写:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
res.send(req.signedCookies)
当然,写作之后:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
app.use(cookieParser(config.cookiesKey));
在server.js中

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
这是服务器端的

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
对于客户端,只需编写一个fetch,就可以比axios更好地处理Cookie,如下所示:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
fetch('http://localhost:3001/auth', {
        method: 'POST',
        credentials: 'include',
        body: JSON.stringify({
          'name': self.state.login,
          'password': self.state.password
        }),
        headers:{
          'Content-Type':'application/json'
        }
      })
      .then(response => response.json())
      .then(body =>
        {
          if(body.success){
            console.log('On fait entrer le mec dans l\'appli')
          }
        }
       )
小心,最重要的选择是:

         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});
credentials: 'include'

希望有帮助。

axios启动的有效负载可能是空的。记录浏览器发出的请求并发布详细信息。我不知道如何做到这一点。关于信息,我尝试了:axios.defaults.withCredential=true;以及node.js中代码顶部的库axios-cookiejar-support.add console.log(req)。转到浏览器并发送请求。此操作在编辑中完成。我想了些什么。因为API在localhost中,而react应用程序也在其中,所以会发生这种情况吗?即使有不同的端口?我已经为你的问题写了一个答案。这是CORS的问题。谢谢你的明确回答。所以我用了第三种方法。用CORS。正如你在我的代码中看到的。我的cookie在控制台中仍有未定义的内容。为什么?如何检查用户拥有的令牌?对你来说,什么是最好的方法?第一个?这两个项目(react和node)在两个文件夹中分开。我对react使用npm start,对node使用node server.js。如何满足2?
         router.post('/auth', function(req, res, next){

                var token = jwt.sign(payload, secretWord, {
                       expiresIn : '24h'
                });

               var cookies = new Cookies(req, res, { keys: keys})

               cookies.set('access_token', token, { signed: true })

               console.log(cookies.get('access_token', { signed: true }))

               res.json({
                  success: true,
                  message: 'Token provided',
                  xsrfToken: payload.xsrfToken,
               });

            })

    app.use(cors({ origin:true, credentials:true }));

        // prevent CORS problems
        app.use(function (req, res, next) {
            res.header('Access-Control-Allow-Origin', '*');
            res.header('Access-Control-Allow-Headers', 'Origin, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, X-Response-Time, X-PINGOTHER, X-CSRF-Token,Authorization');
            res.header('Access-Control-Allow-Methods', 'GET, POST, PUT ,DELETE');
            res.header('Access-Control-Allow-Credentials', true);
            next();
        })

app.use('/', router);

app.listen(3001, function () {
    console.log('Node app is running on port 3001');
});