美文网首页
解决跨域问题

解决跨域问题

作者: 表弟_212 | 来源:发表于2018-06-30 16:57 被阅读0次

跨域

浏览器有同源策略,禁止ajax从一个域名请求另外一个域名上的数据,如果从一个域名请求另外一个域名上的数据,就是跨域。

那什么是同源策略,所谓同源,就是指域名、协议、端口都相同。比如说:一个浏览器打开百度的网站,然后在控制台请求腾讯的网页,浏览器会报一个不是同源的异常。如下图:

image.png

如何进行跨域请求呢?

  1. 使用php做代理请求

Php是服务端语言,是没有跨域限制的。再直白一点,就是javascript通过ajax将请求交给php做,php请求到的数据再交给javascript处理。

image.png
  1. 在服务端设置响应头,允许跨域请求

如果有可能,可以在服务端被请求页面添加响应头,

header(”Access-Control-Allow-Origin:”);号表示允许所有域名访问,也可以指定允许的域名。例如:某人有两个域名,一个域名中想使用另一个域名中数据,可以这样操作。

image.png

header('Access-Control-Allow-Origin:*');

  1. 通过jsonp来实现

实际上就是利用script标签的src属性没有跨域限制的漏洞来完成请求。例如:

image.png
<script>
    var script=document.createElement('script');
    script.setAttribute('src',"http://www.php.com/test.php?callback=response");

    $('head').append(script);
    function response(res){
            $('#result').text(res);
    }
 <script>
          fun=fun=_GET['callback'];
         echo "$fun(".time().")";

相关文章

网友评论

      本文标题:解决跨域问题

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