我正在尝试使用该Gorilla/rpc软件包来设置RPC,以接收请求并通过响应进行回复(显然)。
首先,我尝试使用提供的示例 Gorilla/rpc
这是我的代码:
type HelloArgs struct {
Who string
}
type HelloReply struct {
Message string
}
type HelloService struct{}
func (h *HelloService) Say(r *http.Request, args *HelloArgs, reply *HelloReply) error {
reply.Message = "Hello, " + args.Who + "!"
return nil
}
func main() {
r := mux.NewRouter()
jsonRPC := rpc.NewServer()
jsonCodec := json.NewCodec()
jsonRPC.RegisterCodec(jsonCodec, "application/json")
jsonRPC.RegisterCodec(jsonCodec, "application/json; charset=UTF-8") // For firefox 11 and other browsers which append the charset=UTF-8
jsonRPC.RegisterService(new(HelloService), "")
r.Handle("/api", jsonRPC)
http.ListenAndServe(":"+port, nil)
}
我有几个问题:
我不确定如何设置跨域请求的Access-Control-Allow-Origin标头,就像通常在http.ResponseWriter(使用常规Web服务器的)跨域请求一样,因为这不http.ResponseWriter作为参数。
我实际发送什么来访问该HelloService.Say方法?我已经尝试过,{ method: "HelloService.Say", params:[{Who: "Me"}]}但是得到了405 (Method Not Allowed)(不确定这是否是因为我无法发出x域请求?)
任何见解,不胜感激。
ABOUTYOU
相关分类