PHPSESSID, полученный axios, не работает, но получен браузером. - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно получить некоторые данные (http://example.com/profile.php), которые требуют аутентификации. При первом входе в систему (http://example.com/login.php), скопируйте PHPSESSID, получите данные, отправив PHPSESSID

Итак, я написал два запроса axios: сначала POST-запрос для входа на страницу с учетными данными и получения PHPSESSID, затем GET-запрос к /profile.php с предыдущим PHPSESSID для получения необходимых данных.

Итак, я написал два запроса axios: сначала POST-запрос для входа на страницу с учетными данными и получения PHPSESSID, затем GET-запрос к /profile.php с предыдущим PHPSESSID для получения необходимых данных.

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()

Я не получил ожидаемые данные и получил «нет разрешения на доступ к этой странице». Затем я попытался отправить PHPSESSID, который был сохранен в моем браузере, внутри функции getData (вместо этого, полученной из getCookie ()), и все работает отлично! Я проверил оба запроса GET, запустив прокси-сервер, и оба они идентичны (кроме PHPSESSID). Позже я подумал, что сервер не аутентифицирует запросы с помощью 'axios' в качестве пользовательского агента, и изменил заголовки моих запросов, как в браузере, и все равно ничего не изменилось.

Почему запросы с cookie от axios не работают, а из браузера работают?

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