鍍金池/ 問答/C  Linux  HTML/ fetch攜帶cookie請求,node服務端設置session后請求失敗。

fetch攜帶cookie請求,node服務端設置session后請求失敗。

求大神幫忙看下這是什么原因……

服務端代碼如下:

const Koa = require('koa'),
    KoaRouter = require('koa-router'),
    session = require('koa-session-minimal'),
    views = require('koa-views'),
    path = require('path'),
    statics = require('koa-static'),
    redis = require('koa-redis');

const app = new Koa(),
    router = new KoaRouter();

app.use(views(__dirname, {map: {html: 'nunjucks'}}));
app.use(statics(path.resolve(__dirname, 'dist'),));
//Session
app.use(session({
    store: redis(),
}));
router.get('/', async (ctx) => {
    await ctx.render('index')
});

router.post('/some', async (ctx) => {
    ctx.session.s = 'sessionString';
    ctx.body = {a: 1}
});

app.use(router.routes()).use(router.allowedMethods());

//啟動服務器
app.listen(3000, function () {
    console.log(`?====Server is running at localhost:3000====?`);
});

客戶端代碼如下

import React from 'react';
import "isomorphic-fetch";
import promise from 'es6-promise';

class Home extends React.Component {

    post() {

        fetch('http://localhost:3000/some', {
            method: 'POST',
            credentials: 'same-origin',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                test: 666666,
            })
        }).then((res) => {
            if (res.status === 200) {
                console.log(res.json())
            } else {
                throw new Error('Server Error : ' + res.status);
            }
        })
    }

    render() {
        return <div>
            <button onClick={this.post.bind(this)}>asdasd</button>
        </div>
    }

}

export default Home;

流程就是:點擊button發(fā)出請求,后臺設置session。

第一次啟動服務器,在沒有設置session的情況下,請求正常:

clipboard.png

clipboard.png
在這次請求后,服務端設置session后,再次點擊button發(fā)出請求,就會請求失敗,

clipboard.png

clipboard.png

回答
編輯回答
絯孑氣

不清楚什么原因,重新安裝了一次redis好就好了。

2017年11月20日 18:34
編輯回答
冷眸

估計redis沒有安裝好吧

2018年2月6日 12:19