最近、モバイルアプリのバックエンドとして symfony フレームワークを使用しましたが、チャイナモバイル cmwap ネットワークとすべてのリクエストで問題が発生することがわかりました。ルートパスにルーティングされました
左側の画像は元の $_SERVER オブジェクト、右側の画像は $request->server オブジェクトです
request_uri が変更されたため、あらゆるリクエストは symfony フレームワークによってルートパスにルーティングされます
同時に、x-original-url リクエストヘッダーが欠落しています
理由は symfony の Request クラスのソースコードにあります
x-original-url リクエスト ヘッダーがある場合、それが request-uri として直接使用されることがわかります。ただし、China Mobile cmwap はこのヘッダーを渡しますが、コードを
に変更します。フレームワーク起動ファイル bootstrap.php.cache もあります。これにもこのコードが含まれています。同じ方法で変更するだけです
アプリケーションから 2 つの位置付けを区別するために、チャイナ モバイルは CMWAP に特定の制限を課しています。主な理由は、CMWAP にアクセスするときに、GPRS ネットワーク内の IP にしかアクセスできないことです (10.*.*.*)。 )、ルーティング経由でインターネットにアクセスする方法はありません。 (一部の地域のモバイル ネットワークにはこの制限がない場合があります。) 当社は CMWAP を使用して、WAP ゲートウェイ プロトコルまたはそれが提供する HTTP プロキシ サービスを通じてインターネット上の Web ページを閲覧します。
そう言えば、当然、私たちの会社のネットワークのことを思い出しますが、多くの社会人の友人も同じような経験をしていると思います。同社のネットワークは、ゲートウェイ上でルーティングと NAT を提供せず、外部ネットワークにアクセスできる HTTP プロキシのみを提供します。このように、QQ や MSN などの非 HTTP プロトコル アプリケーションを直接使用することはできません (幸いなことに、これらは HTTP プロキシ接続メソッド
も提供します)。 CMWAPは
(4)の適用範囲でもあります
適用範囲は皆さんが一番気にしている問題です。 CMNET には完全なインターネット アクセス権があるため、ここでは詳しく説明しません。主に CMWAP について説明します。上記の制限のため、CMWAP の適用範囲は WAP ゲートウェイによって提供されるサポートに依存します。現在、China Mobile の WAP ゲートウェイは、HTTP プロキシ プロトコル (ポート 80 および 8080) と WAP ゲートウェイ プロトコル
(ポート 9201) のみを提供しています。 (一部のネチズンは、ポート 1080 も開いているが接続できないと述べています。これは、モバイルによって内部的に使用される Socks バックドアである可能性があります ^_^)。
チャイナモバイルの内部cmwapインターネットIPとポートに緊急の問題
http://www.bkjia.com/PHPjc/892524.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/892524.html