curl / wget在重定向时不解析与浏览器相同的URL

时间:2017-12-29 18:37:16

标签: curl wget gitweb

如何通过curl / wget获取正确的重定向网址?

目标网址:

浏览器(如Chrome / FireFox)会将上述目标网址解析为包含commit的以下网址,这是预期的结果。

但是,curl和wget都会将目标网址解析为包含tree的以下网址,这不是预期的行为。

重定向网址的顺序包括committree,它可能是gitweb问题,而不是curl / wget。 如何通过curl / wget获取正确的重定向URL? 改变用户代理是无能为力的。有任何想法吗? 我的curl命令如下:

$ curl -v -L -o output.html \
https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git%3Ba=commit%3Bh=430f3805c82634a3cb969d83acc4fc4c0ee6af27

1 个答案:

答案 0 :(得分:1)

我发现问题是您需要对作为项目名称一部分的func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { Swifter.handleOpenURL(url) return true } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { Swifter.handleOpenURL(url as URL) return true } 进行url编码。使用/;进行编码会让我感到沮丧。

此外,由于URL包含%3B,因此您需要引用它,因为这是一个命令分隔符。

在查询字符串中,;应为p=kernel/msm-3.18

我能够使以下两个cURL命令工作:

p=kernel%2fmsm-3.18

或者简单地说,

curl -v -L -o output.html \
'https://www.codeaurora.org/gitweb/quic/la/?p=kernel%2fmsm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27'

这可能是因为软件读取原始参数并且不解码%3B并且在查询字符串中需要分号。

希望有所帮助!