0

ここで作業するための情報はまだあまりありません。私たちのアプリは HTTP クエリをサーバーに送信します。これまでに使用したすべてのケースで問題なく動作しました。しかし、ネットワークがプロキシを経由している 1 つのクライアントのログは、要求が正常に送信されたことを示していますが、応答は返されず、Web サーバーはログに何かを受信したことを示していません (障害が発生した時間帯)。 、ログに存在するのは、次に説明するように、インストーラー内からの ZIP のダウンロードだけです)。これは、ネットワーク上の誰に対しても一貫して発生します。

奇妙な点の 1 つは、アプリのインストーラーが ZIP ファイルの HTTP 要求を送信し、問題なく完了しますが、アプリの起動時に (PHP ファイルへの) 最初の要求が失敗することです。これらは、要求を行うために使用される同じ基本コードを共有しますが、異なるパラメーターを送信するだけです。私は 2 つの呼び出しの実際の違いを理解しようとしてきましたが、基本的には次のようになります。

  • 1 つは zip ファイルを要求するもので、もう 1 つはパラメーターを php ファイルに送信するものです。ファイルタイプフィルタリング?
  • 失敗しているものには、いくつかの余分なヘッダー パラメータが追加されています。それらがプロキシによって削除されたかどうかは理解できますが、カスタム/サポートされていないヘッダーがある場合、リクエストを完全にドロップできますか?

関数呼び出しの基本的なスケルトン構造は次のとおりです。

    HINTERNET hInternetOpen = InternetOpen( szAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
    HINTERNET hInternetConnect = InternetConnect( hInternetOpen, "www.server.com", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, 0 );
    HINTERNET hRequest = HttpOpenRequest( hInternetConnect, "GET", "path/query.php?params=etc", NULL, NULL, "*/*", INTERNET_FLAG_RELOAD, 0 );
    // Here I was including some custom headers, such that szHeaders would look something like:
    // "KEY:12345\nTZ:New_York\n"
    HttpSendRequest( hRequest, szHeaders, dwHeadersLen, NULL, 0 );
    InternetReadFile( hRequest, lpBuf, dwBufSize, &dwAmtRead );

リクエストのどの部分が失敗し、どのエラー コードが返されたかを把握するために、より多くのエラー チェックを提供する新しいビルドをセットアップします。また、カスタム ヘッダーや、これとインストーラーの間のその他の不一致も解消されます。

私はそれが本当に原因であるという確信をあまり持っていないので、それまでの間、何がうまくいかないのか、または再確認または注意すべきことについての推測を探しています. 私は当初、ロックダウンされたネットワークのフィルタリングの問題であると確信していましたが、IT グループと話しているところ、要求はブロックされていません。おそらく、私が行っている非標準的なことがいくつかあります。

4

1 に答える 1

1

tcpdumpまたはwiresharkを使用して、Web サーバーに出入りする実際のトラフィックを監視することをお勧めします。彼らの要求がまったく届いていると思いますか? そうでない場合は、ファイアウォールの内側と外側の両方で同じことを試して、そこで何が起こっているかを確認するように依頼します.

于 2010-09-10T23:20:18.623 に答える