Rest HTTP请求被其他HTTP请求篡改,包括golang和标准库

Rest HTTP请求被其他HTTP请求篡改,包括golang和标准库,rest,go,webserver,Rest,Go,Webserver,cat main.go: ``` ``` 构建它并在nginx后面部署 然后客户端查询/users/1234567/places,/users/1234567,等等 获取的响应是{blank data},{normal user(1234567)data}或{normal user(1234567)data},{normal user(1234567)data} 相同的查询前缀和相同的处理程序看起来像是后续HTTP请求重载了响应 我怎么做 可能需要我给出一个响应示例: 正确的回答是: { “元

cat main.go:

```

```

构建它并在nginx后面部署

然后客户端查询
/users/1234567/places
/users/1234567
,等等

获取的响应是
{blank data}
{normal user(1234567)data}
{normal user(1234567)data}
{normal user(1234567)data}

相同的查询前缀和相同的处理程序看起来像是后续HTTP请求重载了响应

我怎么做

可能需要我给出一个响应示例:

正确的回答是:


{
“元”:{
“代码”:200,
“文本”:“确定”
},
“数据”:{
“计数”:21,
“放置标记地图”:[{
“id”:“95842310160384”,
“地点id”:“95551731663150”,
“标签id”:“95551579750669”,
“ct”:“2014-07-01T09:07:28Z”
}, {
“id”:“95842310160385”,
“地点id”:“95551731663150”,
“标签id”:“95551579750694”,
“ct”:“2015-01-15T17:41:23Z”
}, {
“id”:“96262389694470”,
“地点id”:“95551731663150”,
“标签id”:“95910120456455”,
“ct”:“2016-07-18T13:11:39Z”
}, ...],
“地点”:[{
“id”:“95551731663150”,
“名称”:“锦丰餐厅”,
“地址”:“春天花园41号地下”,
“坐标”:{
“纬度”:22.275576,
“经度”:114.172582
},
“电话”:“+85225720526”,
“城市id”:“95530516807703”,
“城市”:“香港”,
“国家”:“香港”,
“类型”:“4sq”,
“参考id”:“4b1613f8f964a520cdb623e3”,
“ct”:“2016-02-23T07:42:43.565489Z”,
“mt”:“2017-02-22T09:35:48.302929Z”,
“评级”:7.5,
“统计数据”:{
“四方”:{
“计数”:111,
“价值”:7.5
},
“一丝不苟”:{
“保存计数”:12
}
},
“永久关闭”:错误,
“价格”:”
}, ...],
“员额”:[{
“集合id”:“95551746474003”,
“坐标”:{
“纬度”:22.275576,
“经度”:114.172582
},
“ct”:“2017-02-22T09:35:47Z”,
“facebook标签用户”:[],
“id”:“97501586849795”,
“媒体”:[],
“电文”:“,
“mt”:“2017-02-22T09:35:47Z”,
“所有者id”:“965272645120”,
“地点id”:“95551731663150”,
“股份转让给”:[],
“明星”:5,
“状态”:“完成”,
“标签”:[]
}, ...],
“用户”:[{
“id”:“9555158132446”,
“uid”:“伊壁鸠鲁”,
“uid忽略案例”:“香港伊壁鸠鲁”,
“名称”:“香港伊壁鸠鲁”,
“头”:https://d278wa0j9nq2mp.cloudfront.net/uploader/54aa335ddf4e63450002919a.jpeg",
“网站”:“www.hkepicurus.com”,
“地点”:“香港”,
“描述”:“香港美食\u0026旅游熊。\n在马来西亚奥斯汀、东京\u0026香港重新聚集。\n标语:EpicurusHongKong\n Facebook,Spotly\u0026 Twitter:HK Epicurus\n微博: 香港美食-伊比\nFacebook粉丝页面:http://on.fb.me/1qDyiIk",
“ct”:“2013-10-13T19:12:41Z”,
“mt”:“2015-11-08T15:22:45Z”
}, ...]
}
}

{
“元”:{
“代码”:200,
“文本”:“确定”
},
“数据”:{
“朋友”:[{
“id”:“9733135725056”,
“发件人id”:“97273770803200”,
“收件人id”:“965272645120”,
“ct”:“2017-01-23T07:58:41Z”
}],
“用户”:{
“ct”:“2013-04-30T23:30:05Z”,
“描述”:“Spotly的创始人兼首席万事官。爱吃。记忆力很差。想记住最好的地方,让旅游研究更好”,
“追随者”:{
“计数”:41291
},
“以下内容”:{
“计数”:322
},
“头”:https://d278wa0j9nq2mp.cloudfront.net/uploader/525ffac8df4e6347870145ef.jpeg",
“id”:“965272645120”,
“区位”:“温哥华·香港·北京”
“mt”:“2015-10-27T09:47:12Z”,
“姓名”:“Edwyn Chan”,
“站点”:http://spottly.com/edwyn",
“uid”:“edwyn”,
“uid忽略大小写”:“edwyn”
}
}
}

但错误的反应是


{
“元”:{
“代码”:200,
“文本”:“确定”
}
}

{
“元”:{
“代码”:200,
“文本”:“确定”
},
“数据”:{
“朋友”:[{
“id”:“9733135725056”,
“发件人id”:“97273770803200”,
“收件人id”:“965272645120”,
“ct”:“2017-01-23T07:58:41Z”
}],
“用户”:{
“ct”:“2013-04-30T23:30:05Z”,
“描述”:“Spotly的创始人兼首席万事官。爱吃。记忆力很差。想记住最好的地方,让旅游研究更好”,
“追随者”:{
“计数”:41291
},
“以下内容”:{
“计数”:322
},
“头”:https://d278wa0j9nq2mp.cloudfront.net/uploader/525ffac8df4e6347870145ef.jpeg",
“id”:“965272645120”,
“区位”:“温哥华·香港·北京”
“mt”:“2015-10-27T09:47:12Z”,
“姓名”:“Edwyn Chan”,
“站点”:http://spottly.com/edwyn",
“uid”:“edwyn”,
“uid忽略大小写”:“edwyn”
}
}
}

第一个反应是错误。或者和第二个反应一样

序列请求是
package main

import (
    "encoding/json"
    "log"
    "net"
    "net/http"
    "net/http/fcgi"
    "os"
)

func main() {
    //setup the config
    configFile := "config.json"
    fd, err := os.Open(configFile)
    if err != nil {
        log.Fatalf("Can't open config file: %v", configFile)
    }
    CFG := config{}
    err = json.NewDecoder(fd).Decode(&CFG)
    if err != nil {
        log.Fatalf("parse config error: %v", err)
    }

    //init DB connection
    db.InitConnectionInfo(CFG.Database.Host, CFG.Database.Port, CFG.Database.Database, CFG.Database.Username, CFG.Database.Password)

    //register HTTP handler
    sessionHandler := &handlers.SessionHandler{}
    http.Handle("/sessions", sessionHandler)
    http.Handle("/sessions/", sessionHandler)

    userHandler := &handlers.UserHandler{
        Facebook:      &oa.OAuth{AppId: CFG.Facebook.Key, Secret: CFG.Facebook.Secret},
        Sina:          &oa.OAuth{AppId: CFG.Sina.Key, Secret: CFG.Sina.Secret},
        Google:        &oa.OAuth{AppId: CFG.Google.Key, Secret: CFG.Google.Secret},
        Tencent:       &oa.OAuth{AppId: CFG.Tencent.Key, Secret: CFG.Tencent.Secret},
        Mixpanel:      &hu.Share{Token: CFG.Mixpanel.Token},
        FacebookShare: &hu.Share{Token: CFG.Facebook.Token},
        SinaShare:     &hu.Share{Token: CFG.Sina.Token},
        GoogleShare:   &hu.Share{Token: CFG.Google.Token},
        TencentShare:  &hu.Share{Token: CFG.Tencent.Token},
    }
    http.Handle("/users", userHandler)
    http.Handle("/users/", userHandler)

    //and so on ...

    //run server
    log.Println("start listen: ", CFG.FcgiAddr)
    l, _ := net.Listen("tcp", CFG.FcgiAddr)
    log.Fatalf("server error is %v", fcgi.Serve(l, nil))
    //@@select {}
    log.Println("end listen")
}
var x = &{...} //init value
fillX(..., x) //fill the fields of x pointer 
//here the fields of x pointer is not same to inner of fillX func
var x = &{...}
x = fullX(..., x)
the problem resolved.