ajax03_跨域访问问题
ajax跨域访问问题
-
什么是跨域访问
从一个域名去访问另一个域名的资源
或者从一个站点去访问另一个站点的资源
-
哪些请求方式可以发送跨域请求
-
超链接
-
form表单
-
传统js代码
-
javascript标签加载(后期可以改造为jsonp方式)
-
img标签
相同点:直接改变地址栏地址
-
-
哪些方式不能发送跨域请求
- 默认情况下,ajax请求方式:被同源策略阻止
-
什么是同源策略?
- 浏览器的一种安全策略
- 同源三要素:协议一致,域名一致,端口号一致
- 只有同源才可共用同一个XMLHttpRequest
-
为什么不能不同源则不能共用同一个XMLHttpRequest?
- 安全角度
-
解决ajax跨域请求的方案
方案1:设置响应头
//被访问的资源,设置允许访问自身的访问源 response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080") //允许某个访问源 response.setHeader("Access-Control-Allow-Origin", "*") //允许所有访问源方案2:jsonp(压根没有用到XMLHttpRequest对象,不受同源策略的限制)
-
json with padding(带填充的json)
-
不是一个真正的ajax请求,但是可以完成局部刷新效果,是一种类ajax请求
-
并且可以完成ajax跨域请求
jsonp 解决跨域问题时,只支持get请求
jsonp底层原理实现
自定义时机执行
-