Lua POST запрос содержит мусор - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь отправить запрос POST, но заметил, что конечная точка, к которой я пытаюсь получить доступ, не похожа на запрос, поэтому, чтобы исследовать ситуацию, я перенаправил запрос на localhost во время прослушивания с nc и увидел следующий запрос:

nc -vlp 444

Connection from 127.0.0.1:53812
POST / HTTP/1.1
Host: localhost:4444
TE: trailers
Cookie: 
Content-Type: application/x-www-form-urlencoded
Connection: close, TE
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0

27 -- this line shouldn't be there
username=username&password=password
0  -- also this one

Код, который я использую, на всякий случай:


local http = require("socket.http") -- even tried ssl.https

...

function Session:post(url, payload) -- payload = "username=username&password=password"
    local response = Response
    local body = { }
    local r, c, h, s = http.request{
        url = url,
        method = "POST",
        sink = ltn12.sink.table(body),
        source = ltn12.source.string(payload),
        headers = {
            ["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0",
            ["Content-Type"] = "application/x-www-form"
        },
    }
    -- you can ignore this
    response.code    = c
    response.status  = s
    response.body    = table.concat(body)
    self.cookies:parse(h["set-cookie"])
    return response
end

Считая, что это проблема ltn12 Я скопировал его исходный код прямо в свой проект, но вскоре обнаружил, что он возвращает только полезную нагрузку, фактически ничего не меняя

BLOCKSIZE = 2048
function generate_payload(s)
    if s then
        local i = 1
        return function()
            local chunk = string.sub(s, i, i+BLOCKSIZE-1)
            i = i + BLOCKSIZE
            if chunk ~= "" then return chunk
            else return nil end
        end
    else return source.empty() end
end

1 Ответ

0 голосов
/ 22 июня 2019

Удалось исправить проблему, добавив заголовок Content-Length.

...