ServiceStack - Używanie kompresji gzip / deflate z żądaniami JSONP

Mam usługę ServiceStack, która kompresuje odpowiedź za pomocąRequestContext.ToOptimizedResult()np .:

[Route("/numbers/search")]
public class FindNumbers
{
}

public object Get(FindNumbers query)
{
    var data = new List<string> { "One", "Two", "Three" };
    return RequestContext.ToOptimizedResult(data);
}

Działa to doskonale podczas wysyłania żądania, takiego jak:

GET http://myhost:13487/numbers/search.json

I jest skompresowany zgodnie z oczekiwaniamiAccept-Encoding nagłówek żądania:

Accept-Encoding: gzip,deflate,sdch

Mogę również wysłać prośbę JSONP:

GET http://myhost:13487/numbers/search?callback=func

który poprawnie zwracaapplication/javascript wywołanie zwrotne (nieskompresowane).

PROBLEM

Kiedy dodamAccept-Encoding żądanie nagłówka do żądania JSONP, odpowiedź to skompresowane dane JSON zgodnie z pierwotnym żądaniem JSON, a nie skompresowaneapplication/javascript oddzwonić.

Czy są jakieś oczywiste powody, dla których brakuje mi tego zachowania, czy jest to po prostu błąd w ServiceStack? Oczekiwałem, że otrzymam skompresowane wywołanie zwrotne JSONP w odpowiedzi, ale jestem dość zielony w przypadku JSONP i może istnieć dobry powód dla tej zmiany.

Zauważ, że pracuję nad źródłem ServiceStack, ale pomyślałem, że dostanę to tam, bo więcej mózgów jest lepszych niż jeden ...

Z góry dziękuję

EDYTOWAĆ

Prześledziłem więc problem w następującym źródle

https://github.com/ServiceStack/ServiceStack/blob/5d09d439cd1a13712411552e2b3ede5a71af2ee5/src/ServiceStack/Host/Handlers/GenericHandler.cs#L79

i

https://github.com/ServiceStack/ServiceStack/blob/5d09d439cd1a13712411552e2b3ede5a71af2ee5/src/ServiceStack/Host/RestHandler.cs#L107

if (doJsonp && !(response is CompressedResult))
    return httpRes.WriteToResponse(httpReq, response, (callback + "(").ToUtf8Bytes(),")".ToUtf8Bytes());

return httpRes.WriteToResponse(httpReq, response);

Więc jeśli odpowiedź jest wynikiem skompresowanym, to niezależnie od wymagań dla JSONP przez?callback=func odpowiedź będzie po prostu zawierać skompresowany json (w przypadku powyższego przykładu), który dzwoni prawdziwie z moimi ustaleniami powyżej. Wygląda więc na to, że opakowanie zwrotne jsonp musi zostać zastosowane wcześniej w pakiecie wywołań.

questionAnswers(1)

yourAnswerToTheQuestion