Web开发之跨域问题

  最近在工作上遇到了跨域方面的问题,借此温习巩固。

  跨域是受到浏览器的同源策略引起的,为了防止某些文档或脚本加载别的域下的未知内容造成泄露隐私,破坏系统等安全行为。

  那什么是同源的呢?

  同源是指:应用协议、域名(主机或IP)和端口都相同的URL,任意一个不同就是跨域。

  跨域直白点讲就是浏览器会限制JS通过xhr请求获取不同源地址的数据。

  目前解决跨域问题的主要方式:

  像<img>、<script>、<iframe>等标签连接的方式以及jsonp请求方式其实在项目中很少用到。

  常用的有:

    1、CORS(跨域资源共享,Cross-Origin Resource Sharing)是通过客户端+服务端协作声明的方式来确保请求安全的。服务端可在HTTP响应头中增加参数

  “Access-Control-Allow-Origin:* 或 https://www.baidu.com ”,来限制哪些域的请求和哪些请求类型可以接受,而客户端在发起请求时必须声明自己的源(Orgin,由浏览器发送请求时自己加上)。

    2、nginx作反向代理服务器,就是把http请求转发到另一个或者一些服务器上。通过把本地一个url前缀映射到要跨域访问的web服务器上,就可以实现跨域访问。对于浏览器来说,访问的就是同源服务  器上的一个url。而nginx通过检测url前缀,把http请求转发到后面真实的物理服务器。

  server {
          location / {
              root   /www/data;
              index  index.html index.htm;
              //允许cros跨域访问
              add_header 'Access-Control-Allow-Origin' '*';
          }
          //自定义本地路径
          location /apis {
              proxy_pass   http://www.abc.com;
         }

  }

猜你喜欢

转载自www.cnblogs.com/happy-study/p/11314605.html