添加CORS支持到Apache Thrift的.NET包中,以便客户端可以跨域访问Thrift服务。
代码示例:
在Thrift服务的初始化代码中添加以下代码:
using Thrift.Transport;
using Thrift.Transport.Server;
// ...
var processor = new MyService.Processor(new MyServiceHandler());
var transport = new THttpServerTransport(new TConfiguration(), port, path);
transport.CORSOrigin = "*"; // 允许任何来源的跨域访问
var server = new THttpServer(processor, transport);
server.Serve();
在客户端调用Thrift服务时,添加以下代码:
using Thrift.Transport;
// ...
var httpClientTransport = new THttpClient(new Uri("http://thrift-service-host:port/path"));
httpClientTransport.Open();
httpClientTransport.SetCustomHeader("Origin", "http://client-host");
var thriftProtocol = new TBinaryProtocol(httpClientTransport);
var client = new MyService.Client(thriftProtocol);
// 调用服务方法
var result = client.MyMethod(args);
httpClientTransport.Close();