前端跨域简单理解

来源:互联网 发布:js 逗号运算符 编辑:程序博客网 时间:2024/06/05 09:11

满足跨域的条件

1.域名不同,例如:

  • a.com与b.com
  • www.a.com与a.com(同一域名,不同二级域名)
  • chs.a.com与en.a.com(主域名相同,子域名不同)
  • a.com与70.32.92.74(对应ip地址)

2.协议不同,例如:http协议与https协议

3.端口不同,例如:a.com:80与a.com:8080

跨域的解决方法

1.document.domain + iframe(只有在主域相同的时候才能使用该方法)

2.location.hash + iframe

3.window.name + iframe

4.动态创建script

5.postMessage(HTML5中的XMLHttpRequest Level 2中的API)

6.JSONP

7.WebSocket

跨域的问题

1.为什么要跨域,跨域的原因是数据哪里传输受阻?
过程:客户端A首先向服务器发送请求,请求客户端B的跨域数据,服务器接受请求,处理请求,将跨域的数据返回给客户端A。但是在A浏览器解析数据时,由于A不认客户端B的数据,于是浏览器拒绝解析,故产生跨域问题。

2.JSONP解决跨域有哪些问题?
由于引用外部的资源文件没有跨域问题,比如引入外部JS或者引入外部IMG等,JSONP解决跨域的方式相当于是引入一个外部资源文件。
Jsonp是Json with Padding的缩写,就是“填充式Json”的意思。也就是说,是客户端发送一个跨域请求出去,服务端收到请求之后,将要返回的json格式的数据,填充在两端协商好的一个callback函数中,拼接成字符串返回回去。也就是说,返回的是一个匿名函数的执行,来调用callback函数。
JSONP只能采用GET方式请求数据,故客户端请求的数据是可以被看到的,所以说安全性上存在一些问题。故在使用JSONP解决跨域问题时,一般要求返回的数据是可以公开的数据,或者是一些不同用户都可以共用的接口。
总结:1)安全问题(请求代码中可能存在安全隐患)
2)要确定jsonp请求是否失败并不容易
3)只能采用GET方法

0 0
原创粉丝点击