- 你是否知道自己的电脑为什么可以访问百度?为什么你本地起的服务只可以让和你在同一局域网的电脑访问到?
- 先解释一下这俩个问题
你可以访问百度是因为百度的地址是公网ip,任何连网的电脑都可以通过http协议进行解析访问
你本地起的服务只有和你是在同一个局域网内的电脑才可以解析你的地址进行访问
2. 解释一下公网ip
公网你可以理解为全世界约定了一个规则,只要可以上网的电脑都可以按照这个规则进行访问
3. 解释一下内网(局域网)ip
局域网你可以理解为一个小群体自定义的规则,只有这个群体的内部人员才知如何解析访问,所以你本地起的服务只有和你在同一局域网的电脑才可以访问的到
4. 如何判断另一台机子是否可以访问你本地起的服务
方法一:比较它们的网络号是否相同。
通常TCP/IP协议的属性中没有直接显示网络号,那么网络号怎么得出呢?将IP号与子网掩码进行与运算就可以得到网络号了方法二:直接用一台电脑ping另一台电脑的ip。
具体如下:在开始-》运行中输入cmd,跳出dos界面后,输入“ping ...”,如果返回四行Request time out,则表示不在同一个局域网;如果返回四行“repley from ….”数据的话,表示在同一个局域网
5. 跨域是什么(先来了解一下同源策略)
同源策略/SOP是一种约定,是浏览器引入的最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XXS、CSFR等攻击,所谓的同源是指“协议+域名+端口”三者相同的俩个url,即便同一个域名对应不同的ip也会产生跨域
从http://zxy.com/index.html 地址 调用http://zxy.com/server.php 非跨域 (协议、IP、域名和端口都相同)
从http://zxy.com/index.html 地址 调用http://hzx.com/server.php 跨域,主域不同 (域名不同)
从http://aa.zxy.com/index.html地址 调用http://bb.zxy.com/server.php 跨域,子域不同 (子域不同)
从http://zxy.com:8080/index.html地址 调用http://zxy.com/server.php 跨域,端口号不同 (端口号不同)
从https://zxy.com/index.html地址 调用http://zxy.com/server.php 跨域,协议不同 (协议不同 http与https是不同的规则)
6. 解决跨域的方法
通过jsonp跨域
document.domain + iframe跨域
location.hash + iframe
window.name + iframe跨域
postMessage跨域
跨域资源共享(CORS)
nginx代理跨域
nodejs中间件代理跨域
WebSocket协议跨域