Lua : 不是所有的URL都能通过socket和http(s).request加载,但在标准浏览器中都能正常工作?

我有几个日历URL,当我将它们输入浏览器时,都能正常工作,但是当我尝试通过Lua和http(s).request调用它们时,只有其中一个能正常工作?请教有人能帮我了解为什么,以及需要做什么不同的方法才能使另一个工作?

local socket = require 'socket'
local http = require "socket.http"
local ssl = require 'ssl'
local https = require 'ssl.https'

local calendarUria = "https://ics.fixtur.es/v2/ipswich-town.ics"
local calendarUrib = "https://calendar.google.com/calendar/ical/en-gb.uk%23holiday%40group.v.calendar.google.com/public/basic.ics"

print("Fixtur.es Football (URL A) 返回以下内容:")
local responseBodya, responseCodea, responseHeadersa = https.request(calendarUria)
print(responseBodya, responseCodea, responseHeadersa)

print("Google UK Holidays (URL B) 返回以下内容:")
local responseBodyb, responseCodeb, responseHeadersb = https.request(calendarUrib)
print(responseBodyb, responseCodeb, responseHeadersb)

如果您运行上面的代码,只有第二个谷歌(URL B)会返回任何东西..

更新:我想知道是否发生了“重定向”...

因为查看http.request,它具有该功能,我以前从未使用过,有没有人看到这篇文章?

http.request{
  url = string,
  [sink = LTN12 sink,]
  [method = string,]
  [headers = header-table,]
  [source = LTN12 source],
  [step = LTN12 pump step,]
  [proxy = string,]
  [redirect = boolean,]
  [create = function]
}

更新2:通过wheregoes.com检查URL,它表明没有发生重定向,因此可能不是这个问题。

日期跟踪:2021-11-21 11:23:32 GMT

用户代理:Wheregoes.com Redirect Checker/1.0

#CodeRequested URL 200https://ics.\|fixtur.\|es/v2/ipswich-town.\|ics Redirects: 0 1200https://ics.fixtur.es/v2/ipswich-town.ics Trace Complete - 3 - text/calendar; charset=utf-8

非常感谢

原文链接 https://stackoverflow.com/questions/70053414

点赞
stackoverflow用户6676439
stackoverflow用户6676439

我逐步尝试了各种不同的 http.requests 脚本,发现以下代码在这种情况下可行。

local http = require("ssl.https")
local ltn12 = require "ltn12"
r = {} -- 初始化空表
local res, code, headers, status = http.request{
url="https://ics.fixtur.es/v2/ipswich-town.ics",
sink = ltn12.sink.table( r )
}
print("status=".. tostring(status))
print("response= ".. table.concat( r, "" ) )

如果有人有时间的话,我很想了解这个答案与我的原始 http.request 发帖有何不同。

2021-11-21 19:07:36