J'essaie de récupérer des pages d'un serveur web via https, en utilisant lua avec luasec. Pour la plupart des pages, mon script fonctionne comme prévu, mais si la ressource contient des caractères spéciaux (comme, 'é), je suis envoyé dans une boucle avec 301 réponses.Pourquoi un serveur Web répondrait-il avec 301 et l'emplacement exact demandé?
laisser ce code sniplet illustrer mon dilemme (détails du serveur réel caviardés pour protéger les innocents):
local https = require "ssl.https"
local prefix = "https://www.example.com"
local suffix = "/S%C3%A9ance"
local body,code,headers,status = https.request(prefix .. suffix)
print(status .. " - GET was for \"" .. prefix .. suffix .. "\"")
print("headers are " .. myTostring(headers))
print("body is " .. myTostring(body))
if suffix == headers.location then
print("equal")
else
print("not equal")
end
local body,code,headers,status = https.request(prefix .. headers.location)
print(status .. " - GET was for \"" .. prefix .. suffix .. "\"")
qui aboutit à la
paradoxaleHTTP/1.1 301 Moved Permanently - GET was for "https://www.example.com/S%C3%A9ance" headers are { ["content-type"]="text/html; charset=UTF-8";["set-cookie"]="PHPSESSID=e80oo5dkouh8gh0ruit7mj28t6; path=/";["content-length"]="0";["connection"]="close";["date"]="Wed, 15 Mar 2017 19:31:24 GMT";["location"]="S%C3%A9ance";} body is "" equal HTTP/1.1 301 Moved Permanently - GET was for "https://www.example.com/S%C3%A9ance"
Comment peut-on être en mesure de récupérer les pages insaisissables, en utilisant lua et aussi peu de dépendances supplémentaires que possible?