跨域的解决方式

一、 JSONP操作跨域

  1. 原理:利用 <script> 标签没有跨域限制(可以加载其它域选下的js),网页可以得到从其他来源动态产生的JSON数据。
  2. 使用JSONP:
    • 首先,网页动态插入<script>元素,由它向跨源网址发出请求。



      上面代码通过添加<script>元素,向服务器127.0.0.1:8080发出请求。
      注意,该请求的查询字符串有一个 callback 参数,用来指定回调函数名字,这对于JSONP是必须的。

    • 服务器收到这个请求后,会将数据放在回调函数位置返回。
    • 由于<script>元素请求的脚本,直接作为代码运行,这时浏览器只要定义了appendHtml函数,该函数就会立即调用,作为参数的JSON数据被视为Javascript对象。

3.实例演示:

  • 后端部分要做的:
    //server.js


  • 前端要做的:shownews这个前端交互是url:localhost:8080/index.html或127.0.0.1:8080/index.html
    //index.html


//使用script标签来定义一个jsonp的数据



二、CORS操作跨域

  1. CORS全称是跨域资源共享(Cross-Origin Resource Sharing),是一种ajax跨域请求资源的方式
  2. 原理:当你使用XMLHttpRequest发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头(即协商处理):Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin;浏览器判断该响应头中是否包含Origin的值,如果有,则浏览器会处理响应,我们就可以拿到响应数据,如果不包含,浏览器直接夺回,这是时我们就无法拿到响应数据。所以CORS的表象是让你觉得它与同源的ajax没什么区别。
  3. 实例演示:
  • 前端:设置一个Ajax请求


  • 后端:设置所需数据参数和同源策略


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浏览器安全的基石是"同源政策"。所谓"同源"指的是"三个相同"。 协议相同 域名相同 端口相同 同源政策的目的,是...
    cce117b0a0ce阅读 295评论 0 1
  • 跨域的原因 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写...
    薛小皮阅读 540评论 0 0
  • JSONP JSONP(JSON with Padding)是资料格式JSON的一种“使用模式”,可以让网页从别的...
    阿鲁提尔阅读 227评论 0 0
  • 第一种JSONP方式 举列说明,比如我想向一个天气接口获取数据,但是我当前的域名和天气这个接口的域名不一样,它想把...
    饥人谷_醉眼天涯阅读 130评论 0 0
  • 什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本,就是跨域名,跨端口,跨协议。它是由浏览器的同源策略造成的,是...
    星火燎原_hx阅读 354评论 0 0