HTTP-запрос — Модуль запроса — 302 расположение перенаправления, содержащее экранированный символ html

#node.js #request

Вопрос:

Я использую модуль запроса для отправки запроса http post на сервер, который отвечает http 302 с URL-адресом перенаправления местоположения, «странно» закодированным:

 'httpsamp;#58;//xxx.xxx.comamp;#63;srcext=valueamp;amp;erl=rrf  

Когда я выполняю тот же запрос в chrome, chrome показывает мне URL-адрес перенаправления местоположения как:

 "https://xxx.xxx.com?srcext=valueamp;erl=rrf"  

Curl дает мне тот же «ответ», что и модуль запроса:

 'httpsamp;#58;//xxx.xxx.comamp;#63;srcext=valueamp;amp;erl=rrf  

Параметры запроса «followRedirect/followAllRedirects» не удается перейти по ссылке, опция curl-L не удается перейти по ссылке. Никаких проблем в chrome

Я знаю, что могу применить «вручную» метод для «правильного» декодирования URL-адреса, но это сложно, так как некоторые включенные параметры должны оставаться закодированными.

Есть ли в curl или запросе опция, которую я пропускаю, чтобы напрямую «декодировать» URL-адрес и сделать так, чтобы опция перенаправления работала ?

Заранее спасибо

=========== РЕДАКТИРОВАТЬ = = = = = = = для запроса, который я использую

 request({  method: "POST",  url: "https://balbalab.com",  headers: {  'Cookie': "XXXXX",  'Accept-Encoding': 'gzip, deflate, fr',  'Accept-Language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7',  'Upgrade-Insecure-Requests': '1',  'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36',  'Content-Type': 'application/x-www-form-urlencoded',  'Accept': 'text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',  'Cache-Control': 'no-cache',  'Connection': 'keep-alive',  "Pragma": "no-cache",  "Content-Type": "application/x-www-form-urlencoded"   },  gzip: true,  form: formFields,   followRedirect: true,  followAllRedirects: true  }  

для завивки я использую:

 curl -X POST "https://url1.url1.com"  -H 'Accept-Encoding: gzip, deflate, fr'  -H 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7'  -H 'Upgrade-Insecure-Requests: 1'  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36'  -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'  -H 'Cache-Control: no-cache'  -H 'Connection: keep-alive'  -H "Pragma: no-cache"  -H "Content-Type: application/x-www-form-urlencoded"  -d 'xx=ff'  -L  

Ответ №1:

Как вы анализируете URL-адрес? Похоже, в вашем синтаксическом анализаторе отсутствует флаг с кодировкой URL.

Комментарии:

1. я тебя не понял, не мог бы ты быть более конкретным ?

2. как вы получили URL-адрес перенаправления: ` httpsamp;#58;//xxx.xxx.comamp;#63;srcext=valueamp;amp;erl=rrf « было ли это: ` ‘ res.заголовки.местоположение «

3. да, в res.заголовки.расположение