301使用socket.http永久移动

时间:2017-12-11 01:53:32

标签: sockets http lua

在python(和我的浏览器)中,我能够按预期向https://www.devrant.com/api/devrant/rants?app=3&sort=algo&limit=10&skip=0发送请求并获得响应,但是使用Lua,我得到HTTP/1.1 301 Moved Permanently。这是我到目前为止所尝试的:

http = require("socket.http");
print(http.request("https://www.devrant.com/api/devrant/rants?app=3&sort=algo&limit=10&skip=0")

输出HTTP错误页面(永久移动)和

301    table: 0x8f32470    http/1.1 301 Moved Permanently

表的内容是:

location    https://www.devrant.com/api/devrant/rants?app=3&sort=algo&limit=10&skip=0
content-type    text/html
server    nginx/1.10.0 (Ubuntu)
content-length    194
connection    close
date    Mon, 11 Dec 2017 01:41:35

为什么只有Lua才会收到此错误?如果我要求谷歌,我得到谷歌主页HTML。如果我向status.mojang.com请求,我会在JSON响应字符串中获取mojang服务器状态,因此套接字可以正常运行。

1 个答案:

答案 0 :(得分:4)

这是因为您使用socket.httphttps网址请求网页;由于socket.http无法处理https,因此会将请求发送到端口80,该端口会转发到https网址,但socket库不会跟踪重定向,因为它没有"知道"如何处理https,所以它只报告301。

您需要安装和使用luasec并使用ssl.https代替socket.http,这将使其正常工作。