fetch跨域和ajax跨域
时间: 2023-11-03 08:02:41 浏览: 110
跨域是指客户端通过浏览器向不同源(协议/域名/端口)的服务器请求资源时所遇到的限制。常见的跨域方式有fetch跨域和ajax跨域。
fetch跨域:
fetch是一种基于Promise的新一代网络请求API,支持跨域请求。在fetch请求时,可以通过设置mode属性为"cors"来支持跨域请求。例如:
```
fetch('http://www.example.com/data.json', {
mode: 'cors'
})
.then(response => {
// 处理返回的响应
})
.catch(error => {
console.log('发生错误:', error);
});
```
ajax跨域:
在原生的XMLHttpRequest中,跨域请求是被禁止的,但是可以通过设置Access-Control-Allow-Origin头来支持跨域请求。例如:
```
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/data.json', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var response = JSON.parse(xhr.responseText);
// 处理返回的响应
}
};
xhr.send();
```
需要注意的是,如果请求的服务器不支持跨域请求,以上两种方式都不能实现跨域请求。此时需要通过服务器端代理或JSONP等方式进行跨域请求。
阅读全文