3

次のコード行を使用して URL のコンテンツを取得したのと同じアルゴリズムを使用して、WebServer を何ヶ月も実行していました。

$response = file_get_contents('http://femoso.de:8019/api/2/getVendorLogin?' . http_build_query(array('vendor'=>$vendor,'user'=>$login,'pw'=>$pw),'','&'));

しかし、突然機能しなくなったので、何かが変わったに違いありません。

以前は、URL は次のように表示されていました。

http://femoso.de:8019/api/2/getVendorLogin?vendor=100&user=test&pw=test

しかし今、nginx ログに、403 を返した次の URL をリクエストしたというエラーが表示されます

http://femoso.de:8019/api/2/getVendorLogin?vendor=100&user=test&pw=test

ターゲットサーバーで何かが変更されたことは知っていますが、それは私に影響を与えるべきではないと思いますか?!

私はすでにGoogleとStackoverflowを読んだり検索したりするのに何時間も費やしましたが、提案されたすべての方法は次のとおりです

urlencode() や htmlspecialchars() など...

私にはうまくいきませんでした。

参考までに、環境は、私の側にnginxサーバーを備えたzendアプリケーションであり、もう一方の端にApacheを備えたphp Webサービスです。

おっしゃる通り、こちら側は何の変化もなく変わりました!

ありがとう

4

3 に答える 3

1

犯人を突き止めよう!


1) そうhttp_build_queryですか?置き換えてみてください:

'http://femoso.de:8019/api/2/getVendorLogin?' . http_build_query(array('vendor'=>$vendor,'user'=>$login,'pw'=>$pw)

と:

"http://femoso.de:8019/api/2/getVendorLogin?vendor={$vendor}&user={$login}&pw={$pw}"


2) その場所に何らかの後処理がありますか? で置き換え'&'てみてくださいchr(38)


3) 試してみて、cURL で少し遊んでみませんか?

$ch = curl_init();

curl_setopt_array($ch, array(
    CURLOPT_URL => 'http://femoso.de:8019/api/2/getVendorLogin?' . http_build_query(array('vendor'=>$vendor,'user'=>$login,'pw'=>$pw),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => true, // include response header in result
    //CURLOPT_FOLLOWLOCATION => true, // uncomment to follow redirects
    CURLINFO_HEADER_OUT => true, // track request header, see var_dump below
));

$data = curl_exec($ch);
curl_close($ch);

var_dump($data, curl_getinfo($ch, CURLINFO_HEADER_OUT));
exit;
于 2013-06-11T09:42:58.340 に答える