0

上下文:我使用 traefik 作为我的反向代理向我的后端 Golang 服务器发送 HTTP 请求,我已经添加了一些 CORS 处理。它适用于 Postman,当我处理 HTTP GET 请求时

在此处输入图像描述

问题:我在浏览器上收到此 404 错误:

在此处输入图像描述

axios调用覆盖Host

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 调用设置默认标头 - 似乎它总是使用 localhost 作为主机

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)
}
4

1 回答 1

0

终于为浏览器找到了解决这个问题的方法,需要使用dnsmasq将docker.local指向127.0.0.1然后将baseURL设置为dev.docker.local,不需要覆盖Host

于 2017-10-05T08:14:14.230 回答