問題タブ [nsurlprotocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
81 参照

ios - iOS SDK からのネットワーク トラフィック

サーバーと通信する SDK を構築したいとしましょう。私は、(SDK を実装するアプリでさえ) 私の要求/応答をインターセプトして見たくありません。

共通の lib を使用するとAFNetworking、すべてのリクエストを確認できるようになりますNSURLProtocol

ieCFNetworkingを使用してリクエスト/レスポンス処理を実行すると、これを行うのが難しくなると思いますか? または、何か不足していますか?そのトラフィックも傍受することは可能でしょうか?

0 投票する
1 に答える
144 参照

ios - iOS Swift NSURLProtocol オブジェクトを介して情報を受け取ったことを UIView Controller に伝える方法

UIWebView リクエストについて教えてくれる NSURLProtocol を実装するクラスを作成しました。対象の URL にヒットし、ViewController でコードを実行して WebView にアクセスすることを UI に伝えたいと考えています。

プロトコルが解決策であると信じていますが、これを機能させる方法について頭を悩ませているようには見えません。提案とコード例は大歓迎です。これが私がこれまでに試したことです。

UI ビュー Controller.swift

これが私の NSURLProtocol 実装クラスと試行されたプロトコルです(間違ったアプローチであるかどうか教えてください)

0 投票する
2 に答える
2326 参照

ios - CFNetwork で SIGABRT を使用すると iOS がクラッシュする

NSURLProtocol を拡張して、アプリでカスタム URL プロトコルを使用します。ほとんどの場合は正常に動作しますが、crashlytics を介して次のクラッシュが報告されています。これを自分で再現することはできません。私が最も心配しているのは、クラッシュしたスレッドのスタック トレースにアプリが表示されないため、デバッグを開始する場所がわからないことです。以下はクラッシュレポートです

スタック トレースの興味深い部分は、これらの数行です。

NSURLProtocol の startLoading メソッドと stopLoading メソッドのスタック トレースを調べて 、リクエストのキャンセルのために startLoading を呼び出し___ZN19URLConnectionLoader27_private_ScheduleOriginLoadEPK12NSURLRequestPK20_CFCachedURLResponse_block_invoke_2 ながら stopLoading を呼び出すことで判断できます。CFURLProtocol_NS::_protocolInterface_cancelLoad()では、ロードを開始しようとした直後にキャンセルが呼び出されるのはなぜですか?

どんな助けでも大歓迎です。ありがとう。

アップデート:

同様の(正確なトレースではない)を再現でき、次のアサートが表示されます..

以下はバックトレースです。

これは、MyConnection が NSURLConnection と非常によく似た動作をするプロトコル クラスの縮小版です。

@implementation MyProtocol

その間、私が見る例外コードは

0 投票する
1 に答える
160 参照

ios - NSURLProtocol の startLoading 内で別の呼び出し

startLoading()元のリクエストを送信する前に、内部で別の http 呼び出しを作成しようとしています。コードは以下のようなものです:

通常のコンテンツの webView で使用される場合、非常に同じコードが機能します(htm, css, etc。) [ケース 1] またはm3u8/mpg[ケース 2] (プレーヤーは webView に自動的に埋め込まれます);

ただし、同じ [ケース 3] を再生するために AVPlayer を直接使用するとm3u8、メソッドの後で検証呼び出しが約 1 分間スタックします (エラーを調べる場合は要求タイムアウト) canInitWithRequest()。その後、次のリクエストは失敗します。

最初はスレッドの問題だと思いました。しかし、1 行目と 2 行目では異なるスレッドが表示されました。

AVPlayer は、http 要求を処理するために webView とは異なるメカニズムを使用したと思われます。[ケース 2] では、おそらく webView が AVPlayer をオーバーライドしただけです。しかし、よくわかりません。

誰かがより多くの洞察を与えることができますか?

ありがとう!

0 投票する
1 に答える
875 参照

ios - NSURLSessionConfiguration 設定に従っていることをテストする

いくつかのデフォルト設定で NSURLSessionConfiguration を作成しましたが、カスタム NSURLProtocol でその設定で作成されたリクエスト オブジェクトを見ると、これらの設定がすべて継承されているようには見えず、少し混乱しています。

登録されているカスタム NSURLProtocol で

私が設定したこれらのパラメータが要求に従っており、継承されていることを確認する方法はありますか?

0 投票する
2 に答える
98 参照

ios - NSURLProtocol 実装が URL を読み取れないようにする

私たちは iOS フレームワークを開発し、他の開発者に配布して彼らのアプリで使用したり、私たちが提供するいくつかのサービスを利用したりしました。それはうまく機能します(インビトロ)。しかし、iOS でのURL Loading Systemの仕組みにより、数行のコードですべての URL がすべての開発者の肉眼で見えるようになります。

あいまいさによるセキュリティが決して良い考えではないことはわかっていますが (HTTPS はクライアントの外部では常に透過的であるという一般的な誤解に影を落としています)、何らかの方法で URL を実装開発者から見えないようにする必要があります。

これまでのところ、私たちのフレームワークに簡単な代替案を実装することを検討しましたNSURLConnectionが、HTTPS 要件とすべてを考慮すると、困難な作業のように思えます。

NSURLProtocolそれ以上のクラスやその他のオプションを登録できないようにする方法はありますか?

NSURLProtocolセキュリティをどのように台無しにするかについてのサンプルコードを次に示します。

そしてあなたのapplication(_, didFinishLaunchingWithOptions:)-> Bool

AVPlayerPS:カスタムDRMを作成するために に関連する URL 接続の結果を変更しようとしたときのことを鮮明に覚えていますNSURLProtocol。手がかりになるかも!?

0 投票する
1 に答える
800 参照

https - SSL からのカスタム スキーム/プロトコル アクセス?

私たちの iOS アプリケーションはカスタム プロトコル (NSURLProtocol) を使用して、UIWebview が必要とする特定のデータのロードを直接管理します。これは、XCode 7 を使用する iOS 9 までは正常に機能していました。

ここで、メイン サイトは HTTPS を使用して読み込まれるため、カスタム プロトコル リソースが参照されると UIWebview はエラーをスローします。アプリはすでに「Allow Arbitrary Loads」を使用してビルドされています。これは、それを必要とするものが他にもいくつかあるためです。これは、NSTemporaryThirdPartyExceptionallowsInsecureHTTPLoads を継承していると思われます。

カスタム プロトコルに HTTPS からアクセスできることを iOS 9 に納得させる方法はありますか? 注 - UIWebview では iframe などは使用しません。これらのリソースは Ajax/XHR を使用して要求され、アプリの NSURLProtocol が呼び出されて、データの読み込みと応答の返しを引き継ぎます。

カスタム スキームは URL の種類にも記載されていますが、これによって動作が変わることはないようです (in または out、同じエラー)。具体的なエラーは次のとおりです。

[ブロック] https://example.com/path/redactedのページは、mycustomprotocol://different.example.com/path/redacted からの安全でないコンテンツを表示することを許可されていませんでした。

編集: Xcode 6.4 をダウンロードし、アプリを再構築しました。iOS 9.x でも問題なく動作するようです。カスタム プロトコルに問題はありません。明らかに、これは長期的な解決策ではありません。Xcode 7以降で解決する方法について、誰かがまだ洞察を持っていることを願っています。