我正在尝试使用该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
(使用常规网络服务器)上为跨域请求设置标头一样,因为这不以 ahttp.ResponseWriter
作为参数。我实际上会发送什么来访问该
HelloService.Say
方法?我试过了{ method: "HelloService.Say", params:[{Who: "Me"}]}
,但我明白405 (Method Not Allowed)
了(不确定这是否是因为我无法发出 x 域请求?)
任何见解都非常感谢。