在向traefik反向代理发出HTTP GET请求时,axios无法覆盖主机

时间:2017-10-05 01:51:41

标签: http docker cors axios traefik

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

enter image description here

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

enter image description here

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

axios.create({
  baseURL: 'http://localhost',
  headers: {'Host': 'dev.docker.local'}
})

enter image description here

在路由处理程序中设置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)
}

1 个答案:

答案 0 :(得分:0)

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