2016-08-03 3 views
0

は私がは、iOS 9+ Testflight携帯電話のデータは

Session.dataTaskWithRequest(request, completionHandler: (func)) 

を通じて当社のサーバーへのコールがあるアプリケーション内部スウィフト2に書かれたモバイルiOSアプリを持って動作しない私は、携帯電話のデータと3台のiPadを持っています。 1 internal、私はアクセスして、デバッガに接続することができます。私はアクセス権がなく、何が起こっているのかを知るために質問をしなければなりません。

内部iPadは、WiFiとCellularの両方でビルドXで動作します。これは、要求が通過してサーバーに正しく連絡することを意味します。

外部のiPadはWi-Fiで動作しますが、携帯電話では動作しません。私たちは、モバイルデータの確保

  • を試してみました

  • がいることを確認し、上の特定のアプリ
  • トグル機内モード
  • リセットネットワーク
  • の再起動デバイスのために&であること、実際のデバイスdataTaskWithRequestが失敗したときに接続しました。

何が起こっているのでしょうか?設定が欠落していますか?私が逃したinfo.plistの設定(なぜ1が機能するのか)

+0

は、あなたのサーバが外部のユーザーの携帯電話ネットワークから到達可能であるいくつかの点で、この便利見つけ

request.setValue(nil, forHTTPHeaderField: "Origin") request.setValue(nil, forHTTPHeaderField: "Host") request.setValue(nil, forHTTPHeaderField: "Referer") 

で修正されましたか? WebブラウザなどでISPがブロックしているかどうかを確認してみてください。 – dgatwood

+0

ブラウザからサーバーにアクセスできますが、これはiOSアプリからのリクエストにのみ問題があるようです。アプリ内でリダイレクトされるリクエストの書き換えがあり、フィルタされている可能性があります。問題が発生したユーザーからサーバーからの応答を取得するための新しいビルドを作成しました。 – Ajwhiteway

答えて

0

だから、dgatwoodは正しい軌道にありました。

場合によっては、アプリ内のリクエストが外部のサーバーにリダイレクトされている場合もあれば、内部のサーバーにリダイレクトされている場合もあります。これらの要求はWKWebViewに由来しているため、WKWebViewの標準のHTTPHeaderFieldsを持っていました。これらの要求は、アプリのバックグラウンドに住んで書かれたミニサーバで内側を向いたので、これら三つのヘッダは

オーバー要求

  • 起源
  • リファラー
  • ホストの誤った情報が含まれてい要求に応じてフィルタリングが行われました。ヘッダーフィールドで宣言された発信元がコールの発信元と一致しなかったため、セルラーネットワークは要求を破棄していたため、実際にはサーバーに到達しませんでした。

    問題

    がうまくいけば、誰かが