2014-03-26 4 views
0

Wifi로만 접속할 수있는 .gif 이미지가 있습니다. mydomain.mysite.com/myimage.gif와 같은 특정 도메인에서는 이미지에 액세스 할 수 없습니다. 사용할 수없는 이미지 응답 응답

하지만 내 생산 환경의 이미지

접근되고 다음과 같은 응답을 반환하는 방법을 몇 가지 다음과 같이

<NSHTTPURLResponse: 0x156c5200> { URL: } { status code: 200, headers { 
    "Accept-Ranges" = bytes; 
    "Cache-Control" = "max-age=86400"; 
    "Content-Length" = 554; 
    "Content-Type" = "image/gif"; 
    Date = "Wed, 26 Mar 2014 14:47:53 GMT"; 
    Etag = "\"030329e4e9c91:11c4\""; 
    "Last-Modified" = "Tue, 09 Jun 2009 13:17:20 GMT"; 
    Server = "Microsoft-IIS/6.0"; 
    "X-Powered-By" = "ASP.NET"; 
} } 

내 목표 C 코드는 다음과 같습니다

NSHTTPURLResponse *response; 
    NSError *error = nil; 

    NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error]; 



    if(response != nil) return YES; 

    return NO; 

해결책 :

이것이 해결책이라고 생각합니다 : cachePolicy가 구현되었습니다.

NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error]; 
+0

캐시에서 이미지를 가져올 수 있습니까? – rckoenes

+0

그게 내가 궁금해하는거야! 하지만 이미지를 독점적으로 캐싱하는 것은 아닙니다. 또한 다른 도메인에서도 작동하지만 프로덕션에서는 작동하지 않습니다. –

+0

iOS는 캐시 정책을 사용하지 말라고 지시하지 않는 한 기본적으로 http 헤더에 설정된 캐시 정책을 사용합니다. – rckoenes

답변

1

프로덕션 서버가 응답을 캐싱하는 캐시 제어 헤더를 보내고있었습니다. 해결책은 아래에 구현 된 NSURLRequest를 캐시하지 않도록 지정하는 것입니다.

NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error];