同源和跨域
什么是同源
当两个url的协议,域名,端口完全一致是,那么这两个url就是同源的,其中任何一个不一致都是不同源的
同源策略
如果js运行在源A里面,那么它就只能获取源A的数据,不能获取其他源的数据,这是浏览器为了保护用户隐私故意这样设计的。
怎么跨域
-
使用CORS
对于简单请求
我们只需要在后端设置一个响应头:Access -Control-Allow-Origin:xxx.com(允许的网站)
对于复杂请求
如PATCH我们需要在在响应中添加如下的响应头
Access-Control-Origin:xxx.com Access-Control-Allow-Methods:POST,GET,OPTIONS,PATCH Access-Control-Allow-Headers:Content-Type
如果需要附带身份信息,JS中需要在AJAX里设置xhr.withCreadentials = true
-
JSONP
我们都知道,虽然我们没办法获取到不同源的数据,但是我们可以引用js文件,所以我们只需要将我们要传输的数据放入到一个js文件中,然后应用这个文件就可以了。