質問: exec("curl --connect-timeout 30 --max-time 60 -i -H 'aaa=aaa' http://XXXXX.com:80/",$err); ``` とシンプルなクッキーに変更したところ返事が来まして 「REMOTE_PORT」のところに「44003」と出ていました ``` string(36) " [SERVER_ADDR] => XXX.XXX.XXX.XXX" string(23) " [SERVER_PORT] => 80" string(36) " [REMOTE_ADDR] => XXX.XXX.XXX.XXX" string(26) " [REMOTE_PORT] => 44003" ``` なぜクッキーをシンプルにしたら返事が来るのかわかりませんが、それは一旦置いておいて(返却のバイト数とかで閾値区切ってるのかも?) 返事が来ないのは「REMOTE_PORT」が「44003」なのが原因と思われるのですが、以下二点お教えくださいませ ・「REMOTE_PORT」はネットで調べると「最終的なリモート(接続先)のポート番号」と出ているのですが、これは「http://XXXXX.com」のことだと思いますが、80番でリクエストを投げたのに、http://XXXXX.comから44003番で返答が帰ってきたということなのでしょうか? ・「REMOTE_PORT」を「80」にする方法をご存知のかたcurl(クライアント側)または(ホスト側)をお教えくださいませ。
回答: それはクライアント(リクエスト)側がデータを受け取るために使ったダイナミックポートです。 HTTP(S)はサーバ側が待ち受けるポートが80or443ですが、それとは別にデータを返す時にクライアントにレスポンスを送るための使用できるポートへ通信をします。 これはリクエスト側(ブラウザなど)からの処理でファイアーウォールは自動で処理しブロックされません。 よってこれを変更することは一般的にできません。 http://www.infraexpert.com/study/tcpip7.html