ServiceStack kullanma ile Modifiye yoktu, ben de 304 gibi Değiştirilmedi dönmek istiyorum:Önlemek istenmeyen başlıkları ServiceStack
HTTP/1.1 304 Not Modified
Fakat ServiceStack birçok istenmeyen diğer başlıklarından (304 kod ile HttpResult dönen) ekler gibi:
HTTP/1.1 304 Not Modified
Content-Length: 0
Content-Type: application/json
Server: Microsoft-HTTPAPI/2.0
X-Powered-By: ServiceStack/3.94 Win32NT/.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type
Date: Tue, 07 Aug 2012 13:39:19 GMT
Diğer başlıkların çıktısını nasıl önleyebilirim? Bir dummy içerik türü filtre kaydeden, HttpResult ile çeşitli yaklaşımları denedim, ancak adından da anlaşılacağı gibi sadece içeriği kontrol eder, üstbilgiler veya here listelenen diğerleri. Aynı sonuçları içeren IStreamWriter ve IHasOptions ile kendi IHttpResult türevimi uygulamayı denedim: ServiceStack istenmeyen üstbilgiler ekler.
Teşekkür
Güncelleme
aşağıdakileri kullanarakcontent-type
kaldırmak mümkün oldu, ancak bazı başlıklar hala mevcut yani
content-length
,
server
ve
date
bulunmaktadır. ServiceStack yaydığı
public override object OnGet(FaultTypes request)
{
var result = new HttpResult
{
StatusCode = HttpStatusCode.NotModified,
StatusDescription = "Not Modified", // Otherwise NotModified written!
};
// The following are hacks to remove as much HTTP headers as possible
result.ResponseFilter = new NotModifiedContentTypeWriter();
// Removes the content-type header
base.Request.ResponseContentType = string.Empty;
return result;
}
class NotModifiedContentTypeWriter : ServiceStack.ServiceHost.IContentTypeWriter
{
ServiceStack.ServiceHost.ResponseSerializerDelegate ServiceStack.ServiceHost.IContentTypeWriter.GetResponseSerializer(string contentType)
{
return ResponseSerializerDelegate;
}
void ServiceStack.ServiceHost.IContentTypeWriter.SerializeToResponse(ServiceStack.ServiceHost.IRequestContext requestContext, object response, ServiceStack.ServiceHost.IHttpResponse httpRes)
{
}
void ServiceStack.ServiceHost.IContentTypeWriter.SerializeToStream(ServiceStack.ServiceHost.IRequestContext requestContext, object response, System.IO.Stream toStream)
{
}
string ServiceStack.ServiceHost.IContentTypeWriter.SerializeToString(ServiceStack.ServiceHost.IRequestContext requestContext, object response)
{
return string.Empty;
}
public void ResponseSerializerDelegate(ServiceStack.ServiceHost.IRequestContext requestContext, object dto, ServiceStack.ServiceHost.IHttpResponse httpRes)
{
}
}
Yanıt için teşekkürler, ancak bu yalnızca CORS'leri değil, diğerlerini de kaldırır. Hala HTTP/1.1 304 Modifiye Edilmedi Içerik-Uzunluk: 0 Içerik-Tür: uygulama/json Son Tarih: Perşembe, 16 Ağustos 2012 16:20:25 GMT Sunucu: Microsoft-HTTPAPI/2.0 Tarih: Per, 16 Ağustos 2012 16:20:24 GMT –
"GlobalResponseHeaders" içinde olmayan veya "HttpResult" ile hizmet bazında kendinizi ekleyen yayındaki başlıklar ServiceStack'tan değil. IIS/ASP.NET kendi başlıklarını eklemeyi seçebilir. – mythz
IIS/ASP.Net kullanılmıyor, sadece konsol uygulaması testi. JSON seri hale getirici ve diğerleri eklendi. Bunları nasıl kontrol edebilirim? –