由axios获得的PHPSESSID不起作用,但由浏览器获得

时间:2019-05-14 19:17:37

标签: javascript axios

我需要获取一些需要身份验证的数据(http://example.com/profile.php)。 首先,我登录(http://example.com/login.php,复制PHPSESSID,通过发送PHPSESSID获取数据

所以我写了两个axios请求,首先是使用凭证登录页面的POST请求,然后获取PHPSESSID,然后是使用先前的PHPSESSID到/profile.php的GET请求,以获取所需的数据。

所以我写了两个axios请求,首先是使用凭证登录页面的POST请求,然后获取PHPSESSID,然后是使用先前的PHPSESSID到/profile.php的GET请求,以获取所需的数据。

const getCookie = () => {
  axios({
    method: 'post',
    url: 'http:/example.com/index.php',
    params: {
      uname: config.uname,
      upwd: config.upwd
    },
    withCredentials: true,
  }).then(res => {
    let cookie =  res.headers['set-cookie'][0]
    cookie = cookie.match(/PHPSESSID=.{26}/)

    getData(cookie[0])
  })
}

const getData = (cookie) => {
  axios({
    method: 'get',
    url: 'http:/example.com/profile.php',
    headers: {
      'Cookie': cookie
    },
    withCredentials: true,
  }).then(response => {
    console.log(response.data)
  })

}

getCookie()

我没有得到预期的数据,并且收到“没有访问此页面的权限”。 然后,我尝试发送保存在我的浏览器中的getData函数(而不是来自getCookie())中的PHPSESSID,并且工作正常!我通过运行代理检查了两个GET请求,它们都是相同的(PHPSESSID除外)。后来我认为服务器不会使用“ axios”作为用户代理对请求进行身份验证,并且像在浏览器中一样更改了我的请求标头,仍然没有什么不同。

为什么来自axios的带有cookie的请求不起作用,但是来自浏览器的请求却起作用?

0 个答案:

没有答案