向 traefik 反向代理发出 HTTP GET 请求时,axios 无法覆盖主机
axios cannot override host when making HTTP GET request to traefik reverse proxy
上下文:我使用 traefik 作为我的反向代理将 HTTP 请求发送到我的后端 Golang 服务器,我已经添加了一些 CORS 处理。它适用于 Postman,当我卷曲 HTTP GET 请求时
问题:我在浏览器上遇到这个 404 错误:
Axios 调用覆盖主机
axios.create({
baseURL: 'http://localhost',
})
axios.defaults.headers['Host'] = 'dev.docker.local'
在控制台中收到此错误
refused to set unsafe header "Host"
Axios 调用覆盖默认主机使用 X-Host-Override
axios.create({
baseURL: 'http://localhost',
})
axios.defaults.headers['X-Host-Override'] = 'dev.docker.local'
Axios 调用设置默认 headers - 似乎总是使用本地主机作为主机
axios.create({
baseURL: 'http://localhost',
headers: {'Host': 'dev.docker.local'}
})
在路由处理程序中设置 CORS
func About(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "*")
aboutStruct := about{
Name: "Hello world",
}
w.WriteHeader(http.StatusOK)
j, _ := json.Marshal(aboutStrcut)
w.Write(j)
}
终于找到解决浏览器问题的方法了,需要用dnsmasq将docker.local指向127.0.0.1然后设置baseURL为dev.docker.local,不需要重写Host
上下文:我使用 traefik 作为我的反向代理将 HTTP 请求发送到我的后端 Golang 服务器,我已经添加了一些 CORS 处理。它适用于 Postman,当我卷曲 HTTP GET 请求时
问题:我在浏览器上遇到这个 404 错误:
Axios 调用覆盖主机
axios.create({
baseURL: 'http://localhost',
})
axios.defaults.headers['Host'] = 'dev.docker.local'
在控制台中收到此错误
refused to set unsafe header "Host"
Axios 调用覆盖默认主机使用 X-Host-Override
axios.create({
baseURL: 'http://localhost',
})
axios.defaults.headers['X-Host-Override'] = 'dev.docker.local'
Axios 调用设置默认 headers - 似乎总是使用本地主机作为主机
axios.create({
baseURL: 'http://localhost',
headers: {'Host': 'dev.docker.local'}
})
在路由处理程序中设置 CORS
func About(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "*")
aboutStruct := about{
Name: "Hello world",
}
w.WriteHeader(http.StatusOK)
j, _ := json.Marshal(aboutStrcut)
w.Write(j)
}
终于找到解决浏览器问题的方法了,需要用dnsmasq将docker.local指向127.0.0.1然后设置baseURL为dev.docker.local,不需要重写Host