原生js解决ajax跨域
时间: 2024-06-09 15:08:24 浏览: 149
解决ajax跨域问题
在原生JS中,解决AJAX跨域有多种方式,以下是两种常用方法:
1. JSONP(JSON with padding)方式
JSONP是一种非正式协议,它允许跨域访问一个资源。它通过在请求URL中添加一个回调函数名的参数,服务器返回一个JavaScript脚本,该脚本会调用该回调函数,并传递数据作为参数。
以下是一个使用JSONP的示例代码:
```javascript
function jsonp(url, callback) {
let script = document.createElement('script');
script.src = url + '&callback=' + callback;
document.body.appendChild(script);
}
function handleData(data) {
console.log(data);
}
jsonp('https://example.com/data?param1=value1¶m2=value2', 'handleData');
```
2. CORS(Cross-Origin Resource Sharing)方式
CORS是一种官方标准,它允许一个域上的Web应用程序访问另一个域上的资源。当浏览器发现AJAX请求跨域时,它会自动发送一个CORS请求,该请求会带上一个特殊的头部信息,告诉服务器该请求是一个跨域请求,并请求服务器返回一个特殊的头部信息,允许浏览器访问该资源。
以下是一个使用CORS的示例代码:
```javascript
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/data?param1=value1¶m2=value2');
xhr.withCredentials = true;
xhr.onload = function() {
console.log(xhr.responseText);
};
xhr.send();
```
在使用CORS时,需要确保服务器端已配置好CORS相关的头部信息。
阅读全文