2017-03-15 3 views
0

luasec과 함께 lua를 사용하여 https를 통해 웹 서버에서 페이지를 검색하려고합니다. 대부분의 페이지에서 스크립트는 의도 한대로 작동하지만 ressource에 특수 문자 (예 : 'é)가 들어 있으면 301 응답의 루프로 보내집니다.웹 서버가 301과 요청한 정확한 위치로 회신하는 이유는 무엇입니까?

이 코드는 내 딜레마 (무고한을 보호하기 위해 검열 실제 서버 관련 정보)를 보여 스니 플릿하자 하나는 검색 할 수 있습니다 얼마나 역설적

HTTP/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"

결과

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 .. "\"") 

파악하기 어려운 페이지는 lua를 사용하고 가능한 한 더 적은 추가 종속성을 사용합니까?

답변

0

분명히 보일 수 있듯이 요청 된 URL은 실제 위치와 다를 수 있습니다.

비슷한 문제가있는 경우 외부 라이브러리에서 자신이 생각하는 바를 확인하십시오.

이 경우 luasocket은 urldecode를 수행 한 다음 URL을 urlencode 했으므로 최종 요청은 그렇지 않은 것으로 보입니다.

관련 문제