Rest HTTP请求被其他HTTP请求篡改,包括golang和标准库
cat main.go: ``` ``` 构建它并在nginx后面部署 然后客户端查询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请求重载了响应 我怎么做 可能需要我给出一个响应示例: 正确的回答是: { “元
/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.