关于跨域

来源:互联网 发布:大华电子秤数据下传 编辑:程序博客网 时间:2024/06/06 11:39

一、关于MAC地址,ip与域名

mac地址:每个网卡出厂时都会有一个硬件地址,而此硬件地址就是MAC地址,用于确定网络设备位置的地址,比如在同一局域网下,我们可以通过arp协议解析出某ip的mac地址,在当地电信网通铁通等网络提供商的帮助下,可通过mac地址得知电脑的位置,相当于居民身份证,如00-05-5D-E8-0F-A5
ip:英特网是一个单一的、抽象的网络,而IP地址就是在给英特网上的主机或者路由器的接口分配一个唯一的32位的标识符,ip的组成是由网络号(标志主机或者路由器所连接的网络,网络号相同则处于同一局域网)与主机号(表示该主机或者路由器)组成的,相当于你的家庭地址。如:192.168.1.1
域名:一串用点分割的名字组成的计算机组或者计算机的名字,便于记忆(比如小破我的域名是www.pohoulong.com,ip是95.168.1.XXX,XXX才不告诉你是啥,ip地址由数字组成不方便记忆,而纯英文的标识符容易理解)com是顶级域名,pohoulong是二级域名,www是三级域名。注意现在一般很多人把www当顶级域名,这是错误的,其实很好理解,我们可以用一个域名数来表示域名系统,比如我们查询www.pohoulong.com,我们需要从树的根节点开始找。


由最后一个com得知他应该在com子树上,那么com是我们第一个真正判断的节点,那么他是一级域名及顶级域名,后再递归查找。

二、跨域

首先我们看一个报错。

XMLHttpRequest cannot load http://localhost:8080/XXX Response for preflight is invalid(redirect)302 ,这个意思就是说XMLHttpRequest不能加载无效的响应(重定向),这个时候我就郁闷了,我没有改域名(localhost域名指向127.0.0.1在hosts文件中配置),为什么会跨域呢,后来一搜跨域的概念就明白了,跨域是只要协议、域名、端口有任何一个不同,都被当作是不同的域,而我确实是从apache的80端口跨成8080端口了。

三、常用解决方案

1.最简单的办法,将localhost改成127.0.0.1来逃避域名,只要我们的请求中没有域名则不会出现跨域问题
2.使用jsonp或者src,src没啥好说的,jsonp是一种数据描述格式,他的原理是在html中动态添加一个<script>表现,而script当中的src属性是没有跨域的限制的。最简单的用法是在ajax当中加上dataType:'jsonp',
   $.ajax({        url:"http://localhost:8080/XXX",           dataType:"jsonp",        data:stringify(_data) ,//这是我的data数据        success:function(data){            alert(data.name + " is a a" + data.sex);        }   });

1 0
原创粉丝点击