문제

내 iPhone 응용 프로그램은 (매우 안전한 것처럼 보이는) 개인 방법을 사용하기 위해서만 거부되었습니다. +setAllowsAnyHTTPSCertificate:forHost: ~을 위한 NSURLRequest. 이 기능을 모방 할 비 개인적인 API가 있습니까?

도움이 되었습니까?

다른 팁

실제로 10.6.8로 테스트하고 있으며이 코드는 여전히 작동합니다. 개인 API를 사용하고 있지만 선택기가 존재하는지 확인하고 있습니다 (MyUrl은 WebView 또는 NSURLConnection에로드하려는 NSURL입니다).

SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
    IMP fp;

    fp = [NSURLRequest methodForSelector:selx];

    (fp)([NSURLRequest class], selx, YES, [myurl host]);
}

"@Selector"는 사용되지 않았으므로 모두 작업은 런타임에 수행됩니다. 그것은 특히 끈을 모호하게하는 경우 Apple의 수표에 숨겨져있는 안전하고 숨겨진 것으로 만듭니다.

정말 어리석은 해결 방법 중 하나는 자신의 카테고리 방법을 만드는 것입니다.

@implementation NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}

@end

이것은 Apple의 개인 API 수표에 의해 얻어야하지만 여전히 같은 것이 었습니다 (언제라도 휴식을 취할 수있는 개인적이고 문서화되지 않은 API [1]를 사용). 실제로 호스트뿐만 아니라 모든 것을 허용하기 때문에 더 나쁩니다.

1] : 개인 API ~해야 한다 그럼에도 불구하고 공개적이지만 개인 API.

setAllowsanyhttpScertificate는 이제 OS X 10.6.6에 모두지지되지 않은 것 같습니다.

내가 10.6.6이라고 말 했나요? 아마도 나는 "스노우 비스타"라고 말했을 것입니다.

해결책이 아니라 제안. 사용에 대해 생각 했습니까? Asihttprequest 프레임 워크 이것을 위해? 이 프레임 워크는 모든 측면에서 완료됩니다. 문서를 확인하십시오. 어쩌면 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top