使用ServiceStack修改,我只是想回到304未修改這樣:返回304時,爲防止不必要的報頭不能與ServiceStack
HTTP/1.1 304 Not Modified
但ServiceStack增加了許多其他有害(返回HttpResult有304碼)頭因此:
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
如何防止其他標題被輸出?我嘗試過使用HttpResult的各種方法,註冊一個虛擬內容類型過濾器,但其名稱僅表示控件內容,不包含標題或其他列出的內容here。我也試着用IStreamWriter和IHasOptions實現我自己的IHttpResult衍生產品,結果相同:ServiceStack添加了不需要的標頭。
感謝
更新
之所以能夠通過使用以下刪除content-type
,但一些頭依然存在,即content-length
,server
,並date
。
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)
{
}
}
感謝您的回答,但這只是刪除了CORS,而不是其他的。我仍然有HTTP/1.1 304未修改 內容長度:0 內容類型:application/json 過期時間:2012年8月16日星期四16:20:25 GMT 服務器:Microsoft-HTTPAPI/2.0 Date:Thu, 2012年8月16日16:20:24 GMT – 2012-08-16 16:21:02
不在'GlobalResponseHeaders'中的發出的頭文件或使用'HttpResult'在每個服務基礎上添加的頭文件不是來自ServiceStack。 IIS/ASP.NET可能會選擇添加自己的標題。 – mythz 2012-08-16 16:23:35
不使用IIS/ASP.Net,只是控制檯應用程序測試。似乎從JSON序列化器和其他添加。我如何控制這些? – 2012-08-16 16:29:43