jsonp对付同源策略

Posted 清汤不加辣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonp对付同源策略相关的知识,希望对你有一定的参考价值。

     当 协议不同或者域名/ip不同或者端口号不同 ,  都不算是同源

  这时候 浏览器就不允许进行跨域请求了

  

  JSONP  json with padding

  在平时的开发中也发现了  ,当我们请求  js, css,图片 等资源的时候  无论是不是本地,国外的都行,哪的都行。

  

  用script标签来请求 跨域的资源就是  jsonp

  不用其他标签因为   script标签请求来的内容都会被当做js代码,json 是源生js支持的数据类型,并且json 可以表达复杂的数据,所以天生的就是有天赋

jsonp.js    我们就在本地  用fille直接打开

    function jsonpCallback (result) {
      console.log(result);
    }
    var JSONP = document.createElement(\'script\');
    JSONP.type = \'text/javascript\';
    JSONP.src = "http://localhost/ajaxphp/result.php?callback=jsonpCallback";
    document.getElementsByTagName(\'head\')[0].appendChild(JSONP);
//? name&value    这个url就是模拟 get请求 目标php文件

result.php  运行本地的服务器  服务器上的 php文件

<?php
  $arr = Array(\'a\'=>1,\'b\'=>2,\'c\'=>3);
  $result = json_encode($arr);
  $callback = $_GET[\'callback\'];
  echo $callback."($result)";
  ?>

 

上面这两个文件   是跨域的  但是仍然可以顺利的访问

 jsonp 不如 ajax好

  ajax使用http协议,服务器返回可以设置csp,等ajax更安全

以上是关于jsonp对付同源策略的主要内容,如果未能解决你的问题,请参考以下文章

同源策略:JSONP和CORS

跨域解决方案之JSONP

Ajax跨域请求 同源策略与Jsonp

同源策略与JSONP劫持原理

Jsonp的js实现,跨域请求,同源策略机制

跨域解决方案之JSONP