私はJavaScriptとPHPで書かれた小さなツールを持っています。このツールは、URLのリストを取得し、それらすべてのHTTPステータスコードをチェックします。curlを使用して実際のステータスを確認します。
私が素敵なURLを持っている限り、それはうまく機能します。®が含まれているURLに問題があります。ツールが返さ404
れるはずだとわかったときに、ツールが返されます301
。
私の推測では、この「®」はのようなものに変換されて%C2
おり、問題を引き起こしていると思います。
これと同じURLをここに貼り付けると、正常に返されるため、実行できることはわかっています301
。
私のPHPカールは次のようになります。
...
if (($curl = curl_init()) == false) {
throw new Exception('curl_init error for url '.$_POST['url'].'.');
}
$header[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[] = "Cache-Control: max-age=0";
$header[] = "Connection: keep-alive";
$header[] = "Keep-Alive: 300";
$header[] = "Accept-Charset: iso-8859-1,utf-8;q=0.7,*;q=0.7";
$header[] = "Accept-Language: en-US;q=0.5";
$header[] = "Pragma: ";
curl_setopt($curl, CURLOPT_URL, $_POST['url']);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 50);
$Cresponse = curl_exec($curl); // execute the curl command
$response['callback']['data'] = $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
...
使用しようとしましたが、これはURL全体をtourldecode()
とともにエンコードします。http://
http%3A%2F%2F
この®が問題を引き起こしている理由はありますか?