Golang 403 禁止错误

标签 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)
}

最佳答案

在不知道您正在运行的确切设置的情况下,我只能猜测,但这通常发生在 Web 服务器过滤请求 header 时。您可能需要添加一个Accept 和一个User-Agent header 以允许该请求。

尝试这样的事情:

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 代码中设置这些 header 方法。

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 的回答.

关于Golang 403 禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21423021/

相关文章:

algorithm - 如何在不轮询的情况下获取数据?

c - 父子进程中的管道、 fork 和​​轮询

iphone - 将计时器保持打开并使用标志来控制执行开/关有什么问题吗?

403 Forbidden 错误时的浏览器行为

java - 通过 FreeMarker 和 spring 的 Controller 出现 403 错误

Intellij 上的 Golang 插件。库和断点

go - 尝试 Recv 返回 channel 关闭,尽管它是打开的

sql - 单值上下文中的多值 .Exec() 与 Golang sql

oop - 为什么go语言的方法有奇怪的语法

php - 使用 php 到 Android 无法从 MySql 获取数据?