我有一个名为“endpoint.php”的页面。
此端点必须由AJAX在同一域中调用。 而且,我有一个.htaccess文件来限制“Access-Control-Allow-Origin”。
Header set Access-Control-Allow-Origin "http://myserver.com"
但是,当我使用来自不同域的CURL时,使用“X-Requested-With:XMLHttpRequest”标头,端点仍然可访问,并使用来自同一域的ajax方法显示结果。
endpoint.php
// using codeigniter input class
if($this->input->is_ajax_request())
{
echo "I'm AJAX";
}
else
{
echo "NOT AJAX";
}
ajax.php
$.ajax({
url: "endpoint.php",
success: function(r){
console.log(r);
// display: I'm AJAX
}
});
curl.php(位于不同的域名)
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => "http://myserver.com/endpoint.php",
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => 0,
CURLOPT_HTTPHEADER => array("X-Requested-With: XMLHttpRequest")
));
$resp = curl_exec($ch);
curl_close($ch);
echo $resp; // result: I'm AJAX
在这种情况下,如何接受AJAX请求但阻止CURL请求带有“X-Requested-With”标题。