我使用 LuaForWindows(最新版本),我已经阅读了这个和这个答案以及我在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
Run Code Online (Sandbox Code Playgroud)
最重要的部分是:
print(require('socket.http').request('https://www.opengl.org/sdk/docs/man2/xhtml/glAccum.xml')) -- added glAccum so you can run it
Run Code Online (Sandbox Code Playgroud)
这总是返回 301。从其他随机页面下载时,这也会发生在我身上。(我没有注意到它们,所以我不能给出一个列表,但我碰巧发现其中一些使用了 cloudflare。)
如果我使用URL和openConnection()在 Java 中编写等效的下载器,它不会重定向。
我已经尝试手动跟踪重定向(设置引用者和内容)并使用“通用”方式。正如其他答案中所述的大多数提示一样。