跨域

域名地址的组成:

这里写图片描述
当协议,子域名,主域名,端口号任意一个不同时,都算作不同域。不同域之间资源请求就叫做跨域。
  如果你直接跨域访问了,浏览器将报错,因为你没有访问权限。javascript出于安全方面考虑,不允许跨域调用其它页面的对象。a.com域名下的js无法操作b.com域名下的对象。

处理跨域问题:
  • 通过在同域名的web服务器端创建一个代理
    在上海服务器上有一个服务:
    www.shanghai.com/service.php
    在北京服务器上也建一个服务:
    www.beijing.com/proxy.shanghaiservice.php
    前端就可以通过北京这个服务从后端访问上海那个服务,然后将响应值返回给前端,北京这个服务就是在后端做了一个代理。所以前端访问了北京这个代理服务就相当于访问了上海那个服务,但这已经属于后台技术。

  • JSONP可用于解决主流浏览器get请求的跨域问题
    在www.aaa.com中

<script>
  function jsonp(json){
       alert(json["name"]);
  }
</script>
<script src="http://www.bbb.com/jsonp.js"></script>
//jsonp.js中:
jsonp({"name":"二毛","age":21});
//script标签可以向不同的域名请求

以上代码,也就是a域名声明了一个函数,b域名去调用。这种方法主要是借助了script标签可以跨域请求的特性。

  • jquery的ajax中本来就支持jsonp的处理方式
    在get请求中:
          dataType:”jsonp”,
          jsonp:”callback”, (添加一个jsonp的属性,后端要获取到这个值)
    对应的的后端代码:
          $jsonp=$_GET[“callback”]; (添加获取)
          $result=$jsonp.’({“msg”:”未找到”})’;(将原本的数据用括号括起来,前面再加上获取的jsonp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值