前端网络——跨域

前端网络——跨域

一、什么是跨域

1、跨域是指浏览器不能执行其他网站脚本,它是由浏览器同源策略造成的,是js的安全机制。
2、我们知道,页面本身由协议、域名、端口号等组成,例如:https://www.baidu.com:80。只要协议、域名和端口号三者中有任意一个不同,就算跨域。

跨域发生在哪里?

跨域行为发生在浏览器。

=过程=
在一次请求数据的过程中:
即使发生了跨域,请求亦可以发出;
服务器端可以接收、正常处理并正常返回;
数据返回后,浏览器可以接受到数据;
接收数据后,浏览器发现当前页面的域同请求的域不同,判定为跨域。
代码在等待结果,但是浏览器判定跨域,不会把结果传给代码。
=结束=

虽然发生了跨域,但是确实需要所请求的数据,怎么办呢?

二、解决跨域问题

(一)后端配合进行跨域
1、JSONP方法(本次只使用这个方法解决)
2、后端设置Access-Control-Allow-Origin属性以支持跨域
(二)后端不配合进行跨域
1、iframe方式(但只能显示、不能控制)
2、通过自己的后端代理

三、代码

1、原生js发送ajax
<script>
        var oDiv=document.getElementById('test');
         var xhr=null;//创建一个http请求的对象
        if(window.XMLHttpRequest){
   
            xhr = new XMLHttpRequest();//常用浏览器带的
        }else{
   
            xhr=new ActiveXObject("Microsoft.XMLHTTP");//支持IE6
        }
        xhr.open("get","url");
        xhr.onreadystatechange=function(){
    
        //status==200 网络请求,结果都会有一个状态码,来表示这个请求是否正常,2××标识成功,3××标识重定向,4××表示客户端错误,5××表示服务端错误
            if(xhr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值