解决API Fetch跨域请求问题,可以使用CORS(跨域资源共享)或JSONP(JSON with Padding)两种方法。
CORS方法: 在服务器端设置HTTP响应头Access-Control-Allow-Origin,允许指定的域名跨域访问。例如,如果要允许所有的域名都可以访问该资源,可以设置为:
Access-Control-Allow-Origin: *
在客户端使用API Fetch时,需要在请求头中添加Origin字段,指定发起请求的域名。例如:
fetch('https://example.com/api/data', {
method: 'GET',
headers: {
'Origin': 'https://example.org',
},
}).then(response => {
console.log(response);
});
JSONP方法: JSONP方法需要在服务端对请求进行特殊处理,在返回数据时,将数据包装成一个函数的调用,并在响应中返回JavaScript代码。客户端使用一个script标签来请求这个响应,以实现跨域获取数据。例如:
服务端响应代码:
$callback = $_GET['callback'];
$data = array('name' => 'Tom', 'age' => 18);
echo $callback . '(' . json_encode($data) . ')'; // 返回类似 "callbackFunction({'name': 'Tom', 'age': 18})" 的字符串
客户端代码:
function callbackFunction(data) {
console.log(data);
}
const script = document.createElement('script');
script.src = 'https://example.com/api/data?callback=callbackFunction';
document.body.appendChild(script);
上一篇:APIfetchinReact
下一篇:APIfetch未响应