2016-05-31 105 views
1

我使用LuaForWindows(最新版本),我已阅读thisthis答案以及我在lua-users.org的mailinglist中找到的所有内容。我试过的(大多数)站点只能用301或302进行响应。我创建了一个示例批处理脚本,从其手册页下载(一些)OpenGL 2.1 Reference。luaSocket HTTP请求总是以重定向响应(301或302)

@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。)

如果我使用URLopenConnection()编写等效下载器,它不会重定向。

我已经尝试了手动重定向(设置refferer和东西)和使用the 'generic' way。正如其他答案中提到的大多数提示。

回答

1

您正在使用socket.http,但尝试访问https URL。 luasocket不处理HTTPS协议,因此它会向默认端口80发送请求,并重定向到HTTPS链接(相同的链接)。这是多次的(因为这个URL并没有真正改变),最后luasocket放弃了这个信息。

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

+0

谢谢!由于我测试过的东西都很老,我总是测试http。现在每一件事都是https(或转换为),那些整齐地隐藏起来的东西很容易被忽略......就像建议中http末尾的s一样。我也应该指出:http://stackoverflow.com/questions/10306489和http://stackoverflow.com/questions/10360632 – tDwtp

相关问题