4

使用新的 Service 实现,我是否必须为我的所有服务提供一个 Options 方法?

使用我的所有服务当前使用的旧 ServiceBase 方法,OPTIONS 返回 OK,但没有 Access-Control-Allow-Origin 标头。

这是一个例子:

https://github.com/JonCanning/SSCors

HelloService 使用服务

GoodbyeService 使用 ServiceBase

4

1 回答 1

8

因为 ServiceStack 的旧 API 强制执行基于接口的 API,它只支持 GET、POST、PUT、DELETE、PATCH 请求。处理 OPTION 请求,我们本质上是一个权宜之计,只有一个实现来发出配置的标头并关闭响应。

使用ServiceStack 的新 API,不再有任何限制,因为您现在只需在 IService 上使用其名称即可处理任何 HTTP 动词。现在,这使您可以单独处理特定请求的所有动词。但现在它不再为您隐式处理,需要一个实现来通过服务处理它。

您可以继续处理所有 OPTIONS 请求,方法是使用任何预定义的钩子在它到达服务之前对其进行一般处理。

例如

Plugins.Add(new CorsFeature()); //Registers global CORS Headers

this.RequestFilters.Add((httpReq, httpRes, requestDto) => {
   //Handles Request and closes Responses after emitting global HTTP Headers
    if (httpReq.HttpMethod == "OPTIONS") 
        httpRes.EndRequest();
});
于 2012-12-06T18:57:29.690 回答