не может повторить отправку формы через почтовый запрос - PullRequest
0 голосов
/ 01 апреля 2019

Попытка воссоздать почтовый запрос, отправленный формой на веб-сайте, однако, когда я непосредственно воссоздаю запрос с запросом модуля узла, я получаю код состояния 302, а тело пусто. Я приложу фотографии почтового запроса, который я пытаюсь воссоздать, и код, который у меня есть (я сохраняю файлы cookie с банкой для файлов cookie и заранее делаю соответствующие запросы для хранения файлов cookie для входа в систему и тому подобное). Спасибо!

This is the post request I am trying to replicate

const request = requests.defaults({
       jar: true
   })
const fetchGradesData = {
       'f': 'f',
       'javax.faces.ViewState': 'j_id5',
       'f:inside:GradedTab:AssignMPSel': '4',
       'f:inside:GradedTab:j_id_jsp_394614891_10pc8': '03-16-2019',
       'f:inside:GradedTab:j_id_jsp_394614891_12pc8': '06-07-2019',
       'f:_idcl': 'f:inside:j_id_jsp_1774471256_10pc5'
   }
   const fetchGradesHeaders = {
       'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
       "Accept-Encoding": "gzip, deflate, br",
       "Accept-Language": "en-US,en;q=0.9",
       'Connection': "keep-alive",
       "Content-Type": "application/x-www-form-urlencoded",
       "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
   }

   request.post(
       "https://mybackpack.gulliverschools.org/SeniorApps/studentParent/academic/dailyAssignments/gradeBookGrades.faces", {
           headers: fetchGradesHeaders,
           formData: fetchGradesData
       },
       function (err, response, body) {
           console.log(response.statusCode)
       }
   )

Вот код, который я использую для отправки запроса на публикацию.

Ниже приведены заголовки ответов, которые я получаю, и заголовки инструментов chrome dev:

Response Headers

{ date: 'Mon, 01 Apr 2019 17:29:19 GMT',
  server: 'Apache',
  'x-frame-options': 'SAMEORIGIN',
  'x-xss-protection': '1;mode=block',
  'strict-transport-security': 'max-age=31536000; includeSubDomains',
  'content-security-policy': 'default-src \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444 *.google-analytics.com ; script-src  \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444 seal.godaddy.com \'unsafe-inline\' \'unsafe-eval\' *.google-analytics.com; style-src   \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444 \'unsafe-inline\'; img-src     \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444 data: *.google-analytics.com seal.godaddy.com *.seniormbp.com ; object-src  \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444 *.google-analytics.com *.seniormbp.com \'unsafe-inline\'; child-src   \'self\' mybackpack.gulliverschools.org:444     *.senior-systems.com:444; frame-ancestors \'self\'      *.senior-systems:444 *.goradius.com;',
  p3p: 'CP=\'CAO PSA OUR\'',
  'cache-control': 'no-store',
  expires: 'Mon, 01 Apr 2019 17:27:39 GMT',
  'x-powered-by': 'JSF/1.2',
  'set-cookie': [ 'senior.session.expired=true' ],
  location: 'https://mybackpack.gulliverschools.org/SeniorApps/studentParent/academic/dailyAssignments/gradeBookGrades.faces?convid=20816',
  'content-length': '0',
  'keep-alive': 'timeout=5, max=100',
  connection: 'Keep-Alive' }

1 Ответ

0 голосов
/ 01 апреля 2019

Согласно документации MDN , код ответа 302 :

Код ответа о состоянии перенаправления HyperText Transfer Protocol (HTTP) 302 указывает, что запрошенный ресурс был временно перемещен по URL-адресу, указанному в заголовке Location. Браузер перенаправляет на эту страницу, но поисковые системы не обновляют свои ссылки на ресурс (в «SEO-говорить» говорится, что «сок ссылок» не отправляется на новый URL).

Итак, я бы предложил вам принять во внимание этот случай, который происходит, когда ресурс временно недоступен в этом url .

Одним из способов сделать это может быть запрос запроса кода ответа, и в случае, если это 302, повторите запрос, но по ссылке в заголовке ответа местоположения.

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