AJAX (Asynchronous JavaScript and XML) 是一种客户端技术,允许网页在不重新加载整个页面的情况下与服务器交换数据。通常,AJAX请求会设置特定的HTTP头(如X-Requested-With: XMLHttpRequest
)。
对于非AJAX请求访问仅限AJAX的URL,最合适的HTTP状态码是:
// 前端AJAX请求示例(使用jQuery)
$.ajax({
url: '/api/data',
type: 'GET',
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
success: function(response) {
// 处理响应
}
});
app.get('/api/data', (req, res) => {
// 检查是否为AJAX请求
if (!req.xhr && !req.headers['x-requested-with']) {
// 返回406状态码
return res.status(406).json({
error: 'This endpoint only accepts AJAX requests'
});
}
// 正常处理AJAX请求
res.json({ data: 'Your AJAX data here' });
});
PHP示例:
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
http_response_code(406);
exit('This endpoint only accepts AJAX requests');
}
Python Flask示例:
from flask import request, jsonify
@app.route('/api/data')
def get_data():
if not request.headers.get('X-Requested-With') == 'XMLHttpRequest':
return jsonify({'error': 'AJAX requests only'}), 406
return jsonify({'data': 'Your data here'})
这种处理方式适用于以下场景:
如果希望更友好地处理非AJAX请求,可以考虑:
选择哪种方式取决于您的具体应用需求和用户体验设计。
没有搜到相关的文章