在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服务器状态,因此套接字可以正常运行。
答案 0 :(得分:4)
这是因为您使用socket.http
从https
网址请求网页;由于socket.http
无法处理https
,因此会将请求发送到端口80,该端口会转发到https
网址,但socket
库不会跟踪重定向,因为它没有"知道"如何处理https,所以它只报告301。
您需要安装和使用luasec并使用ssl.https
代替socket.http
,这将使其正常工作。