美文网首页
Ajax知识点总结—跨域

Ajax知识点总结—跨域

作者: 时修七年 | 来源:发表于2018-08-27 17:55 被阅读11次

什么是跨域?

浏览器中有 同源策略 ,即一个域下的页面中,无法通过 Ajax 获取到其他域的接口。例如有一个接口https://www.baidu.com,你自己的一个页面http://www.yourname.com/page1.html中的 Ajax 无法获取这个接口。这正是命中了“同源策略”。如果浏览器哪些地方忽略了同源策略,那就是浏览器的安全漏洞,需要紧急修复。

url 哪些地方不同算作跨域?

  • 协议
  • 域名
  • 端口
    但是 HTML 中几个标签能逃避过同源策略——<script src="xxx">、<img src="xxxx"/>、<link href="xxxx">,这三个标签的src/href可以加载其他域的资源,不受同源策略限制。
    因此,这使得这三个标签可以做一些特殊的事情。
    <img>可以做打点统计,因为统计方并不一定是同域的。除了能跨域之外,<img>几乎没有浏览器兼容问题,它是一个非常古老的标签。
    <script>和<link>可以使用 CDN,CDN 基本都是其他域的链接。
    另外<script>还可以实现 JSONP,能获取其他域接口的信息,接下来马上讲解。
    但是请注意,所有的跨域请求方式,最终都需要信息提供方来做出相应的支持和改动,也就是要经过信息提供方的同意才行,否则接收方是无法得到它们的信息的,浏览器是不允许的。

如何实现跨域?

解决跨域 - JSONP

jsonp的具体实现首先在页面中的一个script标签里写入一个函数,然后再另外一个标签中利用script请求跨域的接口,传入函数。

客户端

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script>
     function fn(data){
       alert(data);
     }
  </script>
  <script src="1.txt">
    
  </script>
</head>
<body>
  
</body>
</html>

后台

fn("JSONP:json padding")

JSONP实战——百度下拉框

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>百度下拉框</title>
  <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
    function show(json){
      ul1.innerHTML = "";
      json.s.forEach(str=>{
        var liEle = document.createElement("li");
        liEle.innerHTML = str;
        ul1.appendChild(liEle);
      })
    } 
 
    window.onload = function(){
      var ul1 = document.getElementById("ul1");
      var input1 = document.getElementById("text");

      console.log(input1)
      input1.oninput = function(){
        console.log(input1.value)
        var oS = document.createElement("script");
        oS.src = `https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=${input1.value}&cb=show`;
        document.head.appendChild(oS);
      }
    }
  </script>
 
</head>
<body>
<div class="search">
  <input type="text" id="text">
  <ul id="ul1"></ul>
</div>
  
</body>
</html>


相关文章

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • Ajax知识点总结—跨域

    什么是跨域? 浏览器中有 同源策略 ,即一个域下的页面中,无法通过 Ajax 获取到其他域的接口。例如有一个接口h...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • 跨域

    跨域:ajax 不能跨域img css script 标签 可以跨域例如:《img src="images/...

  • Ajax跨域总结

    问题 1、手写一个原生ajax 2、什么是跨域,如何解决 知识点 1、XMLHttpRequest IE低版本使用...

  • AJAX跨域总结

    概述   什么是ajax   它是一种用于创建快速动态网页的技术,通过后台与服务器进行少量数据交换(请求后端数据)...

  • Http浅析【2】——ajax跨域问题

    视频参考:ajax跨域完全讲解 本文精华版:【综合】ajax跨域问题 什么是跨域问题 简单来讲,当前台调用后台,如...

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

网友评论

      本文标题:Ajax知识点总结—跨域

      本文链接:https://www.haomeiwen.com/subject/egktwftx.html