2014-01-29 199 views
-4

當我嘗試檢查本地主機時,它返回正確的狀態,但是當我試圖在網絡上輪詢一臺機器時,它顯示403-Forbidden錯誤。Golang 403禁止錯誤

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) 
} 
+0

*服務器*返回403 - 找出原因。這與go沒有任何關係(cURL或Web瀏覽器說了什麼?)。 – user2864740

+0

@ user2864740-網頁瀏覽器也可以訪問網址和捲曲。 – harry4

+1

發佈您正在使用的'curl'命令(完全來自您的歷史記錄)。 HTTP 403通常在身份驗證失敗時返回。 – elithrar

回答

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 

如果一切正常,你可以在Go代碼使用Header.Add()方法來設置這些標題。

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的回答中修改。