답변:
Drupal 7의 경우 API에는 특별한 것이 없으므로 일반 PHP를 사용하십시오.
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// AJAX request
}
Drupal 8의 경우 Symfony 요청 오브젝트에는 다음과 같은 헬퍼 메소드가 있습니다.
// Example for brevity only, inject the request_stack service and call
// getCurrentRequest() on it to get the request object if possible.
$request = \Drupal::request();
$is_ajax = $request->isXmlHttpRequest();
경로에 'ajax'라는 단어가 포함되어 있는지 확인하기 위해 hook에서 current_path () 사용을 고려할 수 있습니다 .
전의:
$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
echo 'AJAX request detected!';
exit;
}
HTTP_X_REQUESTED_WITH
스푸핑 가능한 AJAX 요청을 확인하는 방탄 방법이 없으므로 URL을 기반으로 한 다른 대안이 있습니다.
if (end((arg())) == 'ajax') {
// AJAX request
}
뷰에서 작동합니다 (마지막 URI 항목에 'ajax'단어가 포함 된 경우).
내가 사용한 방법 :
$request = $_SERVER['REQUEST_URI']
거기에? _wrapper_format = drupal_ajax가 감지되었습니다.