4

新しい Service 実装を使用する場合、すべてのサービスに Options メソッドを提供する必要がありますか?

私のすべてのサービスが現在使用している古い ServiceBase アプローチを使用すると、 OPTIONS は Access-Control-Allow-Origin ヘッダーなしで OK を返します。

次に例を示します。

https://github.com/JonCanning/SSCors

HelloService は Service を使用します

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 に答える