1

これは次の場所canInitWithRequestにありNSURLProtocolます。

+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
  // only handle http requests we haven't marked with our header.
  if ([[[request URL] scheme] isEqualToString:@"http"] &&
      ([request valueForHTTPHeaderField:RNCachingURLHeader] == nil)) {
    return YES;
  }
  return NO;
}  

しかし、 httpsリクエストもNSURLProtocol許可したいのです。 私はこれを試しましたが、呼び出されるとすべてのリクエストが失敗します:

+ (BOOL)canInitWithRequest:(NSURLRequest *)request
{
  // only handle http requests we haven't marked with our header.
  if (([[[request URL] scheme] isEqualToString:@"http"] || [[[request URL] scheme] isEqualToString:@"https"]) &&
      ([request valueForHTTPHeaderField:RNCachingURLHeader] == nil)) {
    return YES;
  }
  return NO;

}

1 つの例は、 httpsスキームを持つログイン要求です。上記の関数ではYESが返されますが、ログイン要求が呼び出されると、ログに次のエラーが表示されます。

エラー Domain=NSURLErrorDomain Code=-1004 「サーバーに接続できませんでした。」

ただし、 httpsのチェックを外すとcanInitWithRequest、エラーは発生しません。RNCachingURLProtocol
を 使用してリクエストをキャッシュしています。 どうすればこれを達成できますか。

4

2 に答える 2