【问题标题】:axios not retrieving cookieaxios没有检索cookie
【发布时间】:2019-03-12 01:11:44
【问题描述】:

嘿,我遇到了一个问题,当我在本地运行服务器和应用程序时没有问题,但是当每个都被推送到各自的服务器时,应用程序不会返回 cookie。有谁知道如何解决这个问题?

服务器:

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Credentials', true);
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept'
  );
  next();
});

反应:

const request = axios.post(`${url}/api/login`, {
      email,
      password,
      withCredentials: true,
      headers: { crossDomain: true, 'Content-Type': 'application/json' },
    })
    .then(response => response.data);

【问题讨论】:

    标签: node.js reactjs cors


    【解决方案1】:

    我想出了如何解决这个问题。我用过:

    服务器:

    app.use(
      cors({
        credentials: true,
        origin: 'http://myapp.com',
      })
    );
    

    反应:

    export function loginUser({ email, password }) {
      axios.defaults.withCredentials = true;
      const request = axios
        .post(`${url}/api/login`, {
          email,
          password,
          withCredentials: true,
          headers: { crossDomain: true, 'Content-Type': 'application/json' },
        })
        .then(response => response.data);
    
      return {
        type: 'USER_LOGIN',
        payload: request,
      };
    }
    

    【讨论】:

    • 它对我有用。即使没有 headers 选项也可以工作。
    【解决方案2】:

    尝试使用默认值axios.defaults.withCredentials = true

    这是一个已知的bug 与 axios

    【讨论】:

    • 谢谢,但我会把它放在哪里?在请求中?
    • 只要放在请求前就可以了
    猜你喜欢
    • 2020-02-23
    • 2019-08-14
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多