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

标签 http redirect lua luasocket

我使用 LuaForWindows(最新版本)并且我已经阅读了 thisthis答案和我能在 mailinglist 中找到的所有内容来自 lua-users.org。我尝试过的(大多数)网站只响应 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 用 Ja​​va 编写等效的下载器和 openConnection()它不会重定向。

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

最佳答案

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

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

关于http - luaSocket HTTP 请求总是以重定向(301 或 302)响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555226/

相关文章:

apache - 在 apache 中排除站点重定向到 https

css - 确定移动浏览器是否支持 CSS 和 javascript

javascript - JWT token 和 CSRF

http - 来自 golang 中的 http 请求的表单变量的嵌套值

javascript - 获取javascript中任何给定单词/句子的google结果数量

lua - 如何快速连续生成唯一的随机数?

random - 从表中选择一个随机项目

javascript - 如何使用 Node JS Http/Https 模块获取 URL 参数

.htaccess - Silverstripe SEO URL - 重定向

algorithm - 检查十六进制是否在具有加权六角形的六角形平铺范围内