使用新的服務實現,我必須爲我的所有服務提供一個選項方法嗎?ServiceStack CORS功能
使用我的所有服務當前使用的舊ServiceBase方法,OPTIONS在沒有Access-Control-Allow-Origin標頭的情況下返回OK。
下面是一個例子:
https://github.com/JonCanning/SSCors
HelloService的使用服務
GoodbyeService使用ServiceBase
使用新的服務實現,我必須爲我的所有服務提供一個選項方法嗎?ServiceStack CORS功能
使用我的所有服務當前使用的舊ServiceBase方法,OPTIONS在沒有Access-Control-Allow-Origin標頭的情況下返回OK。
下面是一個例子:
https://github.com/JonCanning/SSCors
HelloService的使用服務
GoodbyeService使用ServiceBase
因爲ServiceStack舊API執行基於接口的API它僅支持GET,POST,PUT, DELETE,PATCH請求。處理OPTION請求我們基本上是一個立足點的解決方法,它只有一個實現來發布已配置的頭文件並關閉響應。
使用ServiceStack's New API不再有任何限制,因爲您現在可以通過在您的IService上使用其名稱來處理任何HTTP動詞。現在,您可以單獨處理所有動詞以處理特定請求。但現在它不再爲您隱式處理,而需要一個實現來通過服務來處理它。
您可以繼續處理所有的OPTIONS請求,使用pre-defined hooks中的任何一項在到達服務前對其進行一般處理。
E.g.
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();
});
(請原諒我的無知,我是ServiceStack的新手。) 此代碼片段出現在http://stackoverflow.com/questions/8211930/servicestack-rest-api-and-cors中,但我可以'似乎得到它編譯。 'RequestFilters.Add(...)'方法需要一個'ServiceStack.ServiceHost.IHttpRequest'和一個'ServiceStack.ServiceHost.IHttpResponse',但這些接口似乎並沒有聲明'.Method()'或'.EndServiceStackRequest()'方法。我正在使用'使用ServiceStack.ServiceHost;'我錯過了什麼? – AndrewCr
@AndrewCr使用'httpReq.HttpMethod'而不是'httpReq.Method'和'httpRes.EndRequest()'而不是'httpRes.EndServiceStackRequest()' – eXavier
示例鏈接不再有效。 – skolima