もちろん、私はこれを正確に尋ねたいくつかの質問を読んだことがありますが、それは私にとってはまったくうまくいかなかったと言わざるを得ません。私が達成しようとしていることは
- PHPとcurlを介して'X-Requested-With:XMLHttpRequest'ヘッダーを送信する
- PHPおよびcurlを介して他のhttpリクエストヘッダーを送信する
提供されたソリューションは私にはうまくいきませんでした。
正しいhttpリクエストヘッダーを送信していないことをどうやって知ることができますか?
単に
(1)XMLHttpRequest(JQueryクリックのトリガー)によって生成された実際のヘッダーと、FirefoxアドオンのLiveHTTPヘッダーでPHPおよびcurlによってシミュレートされたヘッダーを比較します。
(2)Print_r()-ing$_SERVER変数をターゲットスクリプトに
何が間違っている/私の期待を下回っているのですか?
最初で最も重要なこと:Firefox Live HTTPヘッダーは私のヘッダーをキャプチャしません(ヘッダーが存在しないのと同じように)。
次に、print_r($ _ SERVER)によって:
シミュレートされたヘッダーのいずれかを取得した場合、取得します[HTTP_X_REQUESTED_WITH] => XMLHttpRequest
-ではありません: [X_REQUESTED_WITH] => XMLHttpRequest
。この問題は、curl_setopt($ ch、CURLOPT_HTTPHEADER、$ curl_header)を介して送信するほとんどすべてのヘッダーで発生します。これらのいずれにも「HTTP」というプレフィックスが付いています(「Header1:value1」-「HTTP_HEADER1」を取得します)。
PHPバージョン5.4.7、CURL7.24.0でXAMPPを使用しています。
私が達成しようとしていることが可能かどうかを尋ね、事前に回答に感謝する前に、私が試した多くのコードソリューションの1つであるコードを提供することは悪い考えではありません。
$curl_header = array('X-Requested-With: XMLHttpRequest');
$data = "name=miloshio"; // just to be sure I'm doing the POST request
$ch = curl_init('http://example.com/test.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
echo $result;
私の質問の要約:
- PHPとcurlを介して正確に「X-Requested-With:XMLHttpRequest」ヘッダーを送信することは可能ですか?
- PHPとcurlによって送信されるカスタムヘッダーに「HTTP_」プレフィックスを付加することを回避することは可能ですか?
- PHPとcurlの使用に関してよく知られている制限はありますか?