2013-08-21 5 views
1

GET 요청에 대한 응답에 Cache-Control 헤더를 설정하려고합니다.Cache-Control : GET 요청시 no-cache 설정

이 OPTIONS 요청과 함께 작동합니다 : 이것은 GET 요청과 함께 작동하지 않습니다

PreRequestFilters.Add((httpRequest, httpResponse) => 
{ 
    if (httpRequest.HttpMethod == "OPTIONS") 
    { 
     httpResponse.AddHeader("Cache-Control", "no-cache"); 
     httpResponse.EndServiceStackRequest(); 
    } 
}); 

: 필터가 작동

ResponseFilters.Add((httpRequest, httpResponse, dto) => 
{ 
    httpResponse.AddHeader("Cache-Control", "no-cache"); 
}); 

... 또한 나는 내 자신의 헤더를 추가 할 수 있어요 위의 방법을 사용하여 응답합니다.

3.9.58을 사용하고 있습니다.

그래서이 버그는 (ServiceStack 또는 내 코드에서) 또는 REST 및 GET 요청의 특성 때문에 설계된 것입니까?

+0

"작동하지 않음"은 무엇을 의미합니까? 클라이언트 측에서 조사 할 때 응답 헤더에 설정 한 헤더가 표시되지 않습니까? 헤더가 여전히 존재하지만 캐시 된 값이 사용되고 있습니까? –

+0

죄송합니다. 내 문제는 분명하지 않습니다. 첫 번째 예는 Cache-Control : no-cache 헤더를 반환합니다. 두 번째 ("작동하지 않음") Cache-Control : private를 리턴합니다. 두 번째로 Cache-Control : no-cache도 반환하고 싶습니다. –

답변

0

당신은 요청을 종료하는이 작업을 수행 할 수 없습니다 : 당신이 단락에 요청을 원하고 미래의 처리를 방지하는 경우 사용한다

httpResponse.EndServiceStackRequest(); 

도되지 않습니다 :

httpResponse.EndRequest(); 

그러나이 상황에서는 헤더를 추가하기 만하면됩니다.

+0

답변 주셔서 감사합니다 ... :) 더 이상 사용되지 않는 메소드에 대해서는 httpResponse 객체에 .EndRequest 메소드가 표시되지 않습니다. 이것에 대한 네임 스페이스를 추가해야합니까? CORS의 OPTIONS의 경우 헤더를 추가하고 요청을 종료하고 싶습니다. 코드는 여기에 준 응답에 기초합니다 [link] (http://stackoverflow.com/questions/13741397/servicestack-cors-feature). 아마도 OPTIONS 코드가 ResponseFilter.Add에 있어야할까요? –

+0

CORS 예제에서 원하는 동작은 OPTIONS 요청으로 응답하고 CORS HTTP 헤더를 보내고 요청을 끝내는 것입니다. 서비스 자체는 실행되지 않아야합니다. 방금'ServiceStack' 네임 스페이스에서 (EndServiceStackRequest와 마찬가지로) 확장 메소드 인'EndRequest()'를 사용하도록 업데이트했습니다. – mythz

관련 문제