luaSocket HTTP 请求总是以重定向响应(301 或 302)

Posted

技术标签:

【中文标题】luaSocket HTTP 请求总是以重定向响应(301 或 302)【英文标题】:luaSocket HTTP requests always respond with a redirect (301 or 302) 【发布时间】:2016-09-30 00:41:00 【问题描述】:

我使用 LuaForWindows(最新版本),我已经阅读了 this 和 this 的答案以及我在 lua-users.org 的 mailinglist 中可以找到的所有内容。我尝试过的(大多数)站点只响应 301 或 302。我创建了一个示例批处理脚本,它从他们的手册页下载(一些)OpenGL 2.1 参考。

@ECHO OFF

FOR /F "SKIP=5" %%# IN ( %~fs0 ) DO lua -l socket.http -e "print(socket.http.request('https://www.opengl.org/sdk/docs/man2/xhtml/%%#.xml'))"
GOTO:EOF

glAccum
glActiveTexture
glAlphaFunc
glAreTexturesResident
glArrayElement
glAttachShader
glBegin
glBeginQuery
glBindAttribLocation
glBindBuffer

最重要的部分是:

print(require('socket.http').request('https://www.opengl.org/sdk/docs/man2/xhtml/glAccum.xml')) -- added glAccum so you can run it

这总是返回 301。从其他随机页面下载时也会发生这种情况。 (我没有注意到它们,所以我不能给出一个列表,但我碰巧发现其中一些使用 cloudflare。)

如果我使用 URL 和 openConnection() 在 Java 中编写一个等效的下载器,它不会重定向。

我已经尝试手动跟踪重定向(设置引用者和东西)并使用the 'generic' way。正如其他答案中所述的大多数提示。

【问题讨论】:

【参考方案1】:

您正在使用socket.http,但尝试访问https URL。 luasocket 不处理 HTTPS 协议,因此它向默认端口 80 发送请求,并获得重定向到 HTTPS 链接(相同链接);这持续了好几次(因为 URL 并没有真正改变),最后 luasocket 放弃了生成消息。

解决方案是install luasec 并使用ssl.https 模块来做请求。

【讨论】:

谢谢!由于我测试的那些东西已经很老了,所以我总是测试 http。现在一切都是https(或转换为),那些整齐隐藏的东西很容易错过......就像建议中http末尾的s一样。我还应该指出:***.com/questions/10306489 AND ***.com/questions/10360632

以上是关于luaSocket HTTP 请求总是以重定向响应(301 或 302)的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮以重定向到父 URL

Laravel 存储 GET 参数以重定向回

使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销

LuaSocket FTP 总是超时

如何更改我的注销路线以重定向到我的主页

登录以重定向到其他页面