AJAX设置自定义header

<?php
if (isset($_POST['action']) && $_POST['action'] === 'dopost') {
    // 说明①:服务端接收header后会将键名改为全大写并加上“HTTP_”前缀,如有中横线则会替换为下划线。
    // 说明②:前端使用encodeURIComponent()对header键值编码,这里需要用urldecode()解码。
    $myHeader1 = urldecode($_SERVER['HTTP_MY_HEADER_1']);
    $myHeader2 = urldecode($_SERVER['HTTP_MY_HEADER_2']);
    $myHeader3 = urldecode($_SERVER['HTTP_MY_HEADER_3']);
    $myHeader4 = urldecode($_SERVER['HTTP_MY_HEADER_4']);

    $return = array(
        'errcode' => 0,
        'errmsg' => '',
        'data' => "{$myHeader1}{$myHeader2}{$myHeader3}{$myHeader4}。",
    );

    header('Content-Type: application/json; charset=UTF-8');
    exit(json_encode($return));
}
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>AJAX设置自定义header</title>
</head>
<body>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(function () {
    $.ajax({
        datatype: 'json',
        type: 'POST',
        data: {
            action: 'dopost',
        },
        beforeSend: function (xhr) {
            // 重要提醒①:header键名不能用下划线,只能用中横线。
            // 重要提醒②:header键值尽量不要使用中文,如有中文必须对其进行编码,服务端接收header后再对其进行解码。
            xhr.setRequestHeader('my-header-1', encodeURIComponent('孩儿立志出乡关')); // 服务端可使用 $_SERVER['HTTP_MY_HEADER_1'] 获取
            xhr.setRequestHeader('my-header-2', encodeURIComponent('学不成名誓不还')); // 服务端可使用 $_SERVER['HTTP_MY_HEADER_2'] 获取
            xhr.setRequestHeader('my-header-3', encodeURIComponent('埋骨何须桑梓地')); // 服务端可使用 $_SERVER['HTTP_MY_HEADER_3'] 获取
            xhr.setRequestHeader('my-header-4', encodeURIComponent('人生无处不青山')); // 服务端可使用 $_SERVER['HTTP_MY_HEADER_4'] 获取
        },
        success: function (response) {
            console.log(response.data); // 孩儿立志出乡关,学不成名誓不还。埋骨何须桑梓地,人生无处不青山。
        },
    });
});
</script>
</body>
</html>

Copyright © 2024 码农人生. All Rights Reserved