Golang 403禁止错误

时间:2014-01-29 05:41:46

标签: go polling http-status-code-403

当我尝试检查本地主机时,它会返回正确的状态,但是当我尝试在网络上轮询某台机器时,它会显示403-Forbidden错误。

package main

import "net/http"
import "fmt"

func main() {
    resp, err := http.Get("http://site-centos-64:8080/examples/abc1.jsp")
    fmt.Println(resp,err)
}

1 个答案:

答案 0 :(得分:0)

在不知道您正在运行的确切设置的情况下,我只能猜测,但这通常发生在Web服务器对请求标头进行过滤时。您可能需要为要允许的请求添加AcceptUser-Agent标头。

尝试类似:

curl -i \
-H 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11' \
http://site-centos-64:8080/examples/abc1.jsp

如果这样做,您可以使用Header.Add()方法在Go代码中设置这些标头。

package main

import "net/http"
import "fmt"

func main() {
    client := &http.Client{
        CheckRedirect: redirectPolicyFunc,
    }
    req, err := http.NewRequest("GET", "http://site-centos-64:8080/examples/abc1.jsp", nil)
    req.Header.Add("Accept", `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`)
    req.Header.Add("User-Agent", `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11`)
    resp, err := client.Do(req)
    fmt.Println(resp,err)
}

上面的curl命令从CURL HTTP/1.1 403 Forbidden Date的答案修改。