Go,基本访问身份验证

Does Google Go support decoding of basic access authentication calls? How do I get the username and password from the http.Request?

Go does not seem to intercept basic authentication when it is typed as an URL in a browser, but it does allow one to get it from some other applications calling it.

For example, using a simple Python code for HTTP JSON RPC:

from jsonrpc import ServiceProxy
access = ServiceProxy("http://user:pass@127.0.0.1:8080/")
print access.getinfo()

And in Go calling:

// r *http.Request
r.Header["Authorization"]

One gets this string:

[Basic dXNlcjpwYXNz]

And

dXNlcjpwYXNz

Base-64 decoded gives

user:pass

So some basic authentication in Go is possible, although it might not be something one can rely on.

There seems to be no way to get the user-provided authentication info, but you can provide the valid username and password for HTTP Basic Authentication by calling SetBasicAuth.