跨域访问

博客介绍了跨域访问,即跨域名访问,因同源策略,AJAX不能实现跨域。同源指协议、地址、端口相同,JavaScript或Cookie只能访问同域名内容。为实现跨域,有JSONP、iframe等方案,常用的JSONP利用HTML元素src属性可跨域的思路解决问题。
  • 什么是跨域访问

    • 跨域访问就是跨域名访问,即A网站的网页在代码上访问了B网站的页面
    • 由于同源策略(浏览器的安全机制),所以,AJAX不能实现跨域访问。
      同源策略:这是一种浏览器策略,浏览器的安全机制:浏览器只允许来自同一个来源的文件相互访问。(前段与后端)
      同源:同样的协议,同样的地址,同样的端口
      JavaScript或Cookie只能访问同域名下的内容同样的协议,同样的地址,同样的端口。
  • AJAX不支持跨域访问,为了达到跨域访问的目的,出现了很多的解决方案 :JSONP,iframe,flash,xhr2等。但是比较常用的是JSONP。

  • JSONP(JSON with Padding)可用于解决主流浏览器的跨域数据访问的问题)。跟JSON没有关系。 这是一种跨域的技巧。

  • JSONP是如何实现跨域访问的?本质上是利用HTML元素的src属性都可以跨域的思路来解决的。 因为src是可以跨域的。
    如:img,script,iframe等标记的src属性的值都可以赋成其它域名的合法地址。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <input type="text" name="" id="wd" value="" />
        <ul id="list">
            
        </ul>
    </body>
</html>
<script>
    let oWd = document.querySelector("#wd");
    let oUl = document.querySelector("#list");
    
    oWd.oninput = function(){
        let scrpit = document.createElement("script");
        scrpit.src = "http://suggestion.baidu.com/su?wd="+this.value+"&cb=fun";
        document.body.appendChild(scrpit);
    }
    function fun(str){
        let strHtml = "";
        for(let i=0; i<str.s.length; i++){
            strHtml += "<li>" +str.s[i]+ "</li>";
        }
        oUl.innerHTML = strHtml;
    }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值