一,跨域
- JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。
- 跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。
- 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。它的存在可以保护用户隐私信息,防止身份伪造等(读取Cookie)。
- 同源策略限制内容有:
- Cookie、LocalStorage、IndexedDB 等存储性内容
- DOM 节点
- AJAX 请求不能发送
- 但是有三个标签是允许跨域加载资源:1.<img src=XXX> 2.<link href=XXX> 3.<script src=XXX>
- 处理跨域的方法
- JSONP
- JSONP和AJAX相同,都是客户端向服务器端发送请求,从服务器端获取数据的方式。但AJAX属于同源策略,JSONP属于非同源策略(跨域请求)
- CORS
- WebSocket
- PostMessage:
- JSONP
二,内网穿透
-
1,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。
-
2,端口映射,其实就是常说的NAT地址转换的一种,其功能就是把在公网的地址转翻译成私有地址
-
3,穿透工具
- Ngrok
- Natapp
- 小米球
- Sunny-Ngrok
- echosite
- Ssh、autossh
- Lanproxy
- Spike
- frp
- fcn
- 花生壳