ajaxでブラウザからアクセス不可にするにはこうすればいいのか

ajaxjQueryをサクッと使用

  • 受け取る側
<?php
try {
    if (($_SERVER['HTTP_X_REQUESTED_WITH'] ?? '') !== 'XMLHttpRequest') {
        throw new Exception("ブラウザからアクセスきんし\n");
    }

    switch ($_GET['id']) {
        case 1:
            echo "田中";
            break;
        default:
            echo "なし";
            break;
    }
    
}catch(Exception $e){
    exit($e->getMessage());
}
  • 送る側
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
<label>ID:<input type="number" name="name" value=""></label>
<input type="button" value="送信">
<p>名前:<span></span></p>

<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
$(function() {
    $("[type=button]").on("click", function() {

        $.get("sample.php", {
            id : $("[type=number]").val()
        }, function(data) {
            $("span").text(data);
        });

    });
});
</script>
</body>
</html>

f:id:okumuraa1:20180219210704g:plain


でもcurl使えばアクセスできてしまうという

f:id:okumuraa1:20180219211827p:plain