【问题标题】:Golang 403 forbidden errorGolang 403 禁止错误
【发布时间】:2014-02-20 18:43:35
【问题描述】:

当我尝试检查本地主机时,它会返回正确的状态,但是当我尝试轮询网络上的机器时,它会显示 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)
}

【问题讨论】:

  • server 返回 403 - 找出原因。这与 go 本质上没有任何关系(cURL 或网络浏览器说什么?)。
  • @user2864740- Web 浏览器也可以访问 url 和 curl。
  • 发布您正在使用的curl 命令(确切地说,来自您的历史记录)。 HTTP 403 通常在身份验证失败时返回。

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


【解决方案1】:

在不知道您正在运行的确切设置的情况下,我只能猜测,但这通常发生在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2011-07-12
    相关资源
    最近更新 更多