go 开发web server使用如何获取完整的url?

mikeway · 2016-03-31 06:11:04 · 3541 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-03-31 06:11:04 的主题,其中的信息可能已经有所发展或是发生改变。

开发中遇到以下问题:

nginx 转发 https请求 到 go web server对应的 http 端口(10010),

例如完整的url请求为 https://www.xxx.com/info?para=value#204 那么go web server如何能得到以上完整的url "https://www.xxx.com/info?para=value#204"

以下是主函数,是否需要重写 ListenAndServe? func main() { port := "10010" println("Web Server Listening on port ", port, "...")

    http.HandleFunc("/", defaultHandler)
    http.HandleFunc("/info", infoHandler)
    http.ListenAndServe(":"+port, nil)

}


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3541 次点击  
加入收藏 微博
1 回复  |  直到 2016-04-01 06:08:11
mikeway
mikeway · #1 · 9年之前

又查了下nginx反向代理的资料,可以通过设置 proxy_set_header Scheme $scheme 以及 proxy_set_header Host $host 来设置,然后传递给go web 的10010端口, go程序可以通过 r.Header.Get("Scheme")获取是 https/http; 通过 r.Header.Get("Host")来获取www.xxxx.com 其他信息可以 r.URL.Fragment r.URL.RequestURI() r.Host等获取,

至于#号以及以后的是作为Single Page Application 的标识(ajax等利用),浏览器是不会发送#后面的相关信息。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传