跨域解决方案

      正常情况下,我们使用ajax请求的数据都在自己的服务器上。但在一些特定的场景中,我们需要获取到别人的服务器上的数据,也就是在自己的服务器中的ajax要请求到别人的服务器的网址,这就是跨域。但是浏览器是不允许这样操作的,因为浏览器有同源策略同源策略:所谓同源,就是指域名、协议、端口都相同。比如说:在自己的localhost域名下请求www.baidu.com下的内容,这样的协议首先就不同,自己的是http,百度的是https,所以会被同源策略限制。

如何解决跨域?

  1. 使用php做代理

    也就是说跨域请求只是限制客户端向服务端,如果是服务端向服务端请求的话就不存在这个问题,也就是说需要跨域的请求交给php服务端来做,有了结果再响应给ajax即可。

    原理上利用的php的爬虫技术。有file_get_contents()curlob_get_contents()

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

    如果请求的服务端是自己可操作的话,可以在php端设置允许跨域的响应头。代码如下:

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

     

  3. 使用服务器代理(nginx)

    在nginx配置文件中配置代理,具体配置如下:

    location = 自定义url {
      proxy_pass 待跨域请求的地址
    }

     

  4. 通过jsonp来实现

    利用标签可以跨域(当前网页的图片链接可以是别的网站上的图片)的特性,制作标签进行跨域

posted @ 2020-02-29 22:22  程序员也有春天呀  阅读(106)  评论(0)    收藏  举报