在默认浏览器中打开带有参数的 URL

如果我们尝试从Go打开给定的URL,则非常简单,如下面的代码所示(对于mac):

exec.Command("open", "https://google.com").Run()

但是,如果URL具有参数,我们如何做同样的事情呢?

例如,如果我们尝试打开一个Facebook登录网址:“https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com”,则该命令失败,退出状态为1。

即使我们为特殊字符 ?、& & 和 = 包含反斜杠也是如此。网址将更改为 。https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com

如果我们使用,上面的URL将在默认浏览器中打开

open https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com

终端中的命令。但是当从Go这样做时,它会失败!

有没有办法从Go做同样的事情?

是的,可以使用 来完成。但这不会打开默认浏览器,这是用户最有可能登录的位置。exec.Command("open", "-a", "safari", url)


泛舟湖上清波郎朗
浏览 268回答 2
2回答

有只小跳蛙

它实际上在没有反斜杠的情况下工作。事实证明,终端中需要反斜杠,因为终端在将字符串发送到浏览器之前在内部转义反斜杠。但是,如果发生 go,它只是将原始字符串发送到浏览器。在 Go 中使用:exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com")从终端命令行:open https://www.facebook.com/v11.0/dialog/oauth\?client_id\=123456\&redirect_uri\=https://example/com

MMTTMM

尝试追加反斜杠(\)exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth\\?client_id/\\=123456/\\&redirect_uri/\\=https://example/com").Run()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go