在默认浏览器中使用参数打开 url
open url with parameters in default browser
如果我们尝试从 Go 打开给定的 URL,这很容易,如下面的代码所示(对于 mac):
exec.Command("open", "https://google.com").Run()
但是如果 URL 有参数,我们如何做同样的事情呢?
例如,如果我们尝试打开 facebook 登录 URL: "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com", 命令失败,退出状态为 1.
即使我们为特殊字符 ?、& 和 = 添加反斜杠也是如此。 URL 更改为 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)
来完成。但这不会打开默认浏览器,这是用户最有可能登录的地方。
尝试附加反斜杠(\)
exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth\?client_id/\=123456/\&redirect_uri/\=https://example/com").Run()
它实际上在没有反斜杠的情况下工作。原来终端需要反斜杠,因为终端在将字符串发送到浏览器之前在内部转义了反斜杠。但是在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
如果我们尝试从 Go 打开给定的 URL,这很容易,如下面的代码所示(对于 mac):
exec.Command("open", "https://google.com").Run()
但是如果 URL 有参数,我们如何做同样的事情呢?
例如,如果我们尝试打开 facebook 登录 URL: "https://www.facebook.com/v11.0/dialog/oauth?client_id=123456&redirect_uri=https://example/com", 命令失败,退出状态为 1.
即使我们为特殊字符 ?、& 和 = 添加反斜杠也是如此。 URL 更改为 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)
来完成。但这不会打开默认浏览器,这是用户最有可能登录的地方。
尝试附加反斜杠(\)
exec.Command("open", "https://www.facebook.com/v11.0/dialog/oauth\?client_id/\=123456/\&redirect_uri/\=https://example/com").Run()
它实际上在没有反斜杠的情况下工作。原来终端需要反斜杠,因为终端在将字符串发送到浏览器之前在内部转义了反斜杠。但是在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