悠悠楠杉
网站页面
正文:
在前后端分离的开发模式中,跨域数据交互是高频需求。JavaScript的Fetch API以其简洁的语法和强大的功能成为首选工具,而PHP作为后端处理的“老将”,如何与Fetch API协作呢?本文将通过一个模拟新闻数据拉取的案例,拆解全流程实现。
前端通过Fetch API向不同域的服务器请求JSON数据时,需注意CORS策略。以下是一个基础请求示例:
fetch('https://api.example.com/news', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
mode: 'cors' // 显式声明跨域模式
})
.then(response => {
if (!response.ok) throw new Error('网络响应异常');
return response.json();
})
.then(data => {
console.log('获取的数据:', data);
// 后续处理逻辑...
})
.catch(error => {
console.error('请求失败:', error);
});关键点:
1. mode: 'cors' 明确跨域意图
2. response.json() 自动解析JSON响应
3. 错误处理链确保健壮性
假设我们需要对获取的新闻数据过滤敏感词并补充本地信息,PHP脚本如下:
// 接收JSON数据
$json_data = file_get_contents('php://input');
$data = json_decode($json_data, true);
// 敏感词过滤函数
function filter_content($text) {
$blacklist = ['违规词1', '违规词2'];
return str_replace($blacklist, '***', $text);
}
// 处理数据
$processed_data = [
'title' => filter_content($data['title']),
'content' => mb_substr($data['content'], 0, 1000), // 截取正文
'local_tag' => '本站原创' // 添加本地标识
];
// 返回JSON响应
header('Content-Type: application/json');
echo json_encode($processed_data);处理要点:
1. php://input 获取原始POST数据
2. json_decode 的第二个参数设为true转换为关联数组
3. 响应头必须声明JSON格式
场景需求:从第三方API获取新闻列表,经PHP加工后显示到网页。
前端适配:修改Fetch请求目标为PHP代理javascript
fetch('/proxy.php?url=' + encodeURIComponent('https://api.example.com/news'))
PHP代理脚本(proxy.php核心逻辑):
$remote_url = $_GET['url'];
$response = file_get_contents($remote_url);
header('Access-Control-Allow-Origin: *'); // 简易CORS处理
echo $response;第三方API → PHP代理(过滤/增强) → 前端页面cache: 'no-cache'选项set_time_limit(30)避免长请求阻塞$_GET['url']白名单curl代替file_get_contents以支持HTTPS通过这种架构,既能发挥Fetch API的现代化特性,又能利用PHP的稳定处理能力。实际项目中,可进一步加入JWT验证或日志监控等扩展功能。