上回说到我们可以通过重写请求头的技术,来绕过浏览器的限制,今晚来看令一个在请求头中设置的头信息—–内容缓存
Cache-Control
一些浏览器会缓存通过Ajax请求所获得的内容,在浏览器回话期间不会再次的请求它。我们可以通过设置禁止缓存的头信息可以达到,当请求的内容发生了改变的时候,就会在下一次请求文档时体现出来
需要做的就是在open方法和send方法之间加一句
httpRequest.setRequestHeader(‘Cache-Control’,’no-cache’)
读取响应的头
我们可以通过
1 httpRequest.getResponseHeader(里面写某个响应头)
2 httpRequets.getAllResponseHeaders()
两个方法来获取服务器响应某个ajax时发送回来的http头。
需要注意的是,响应头是服务器在响应请求是首先会写的信息,所以我们可以在readyState == 2 的时候就可以用着两个方法来读取响应头了,而不需要等到4的时候。
跨源请求
默认情况下浏览器限制脚步只能在他们所属的文档的来源内生成ajax请求,HTML5中的跨源资源共享规范提供了一种合法的方式来生成跨源的请求。
方法其实并没有什么黑科技的成分,就是在服务器端设置一个白名单而已,以此声明哪个源可以有特殊的权限来对我进行请求。
在服务端
var origin = req.headers[‘origin’];
if(origin.indexOf(‘xiaoyu’)>-1){
res.setHeader(“Access-Control-Allow-Origin”,origin);
}
不难懂吧,就是把你要将特殊权限分配给谁的那个域给写进白名单而已,这样拥有特殊权限的源就可以对你发送跨域请求了。
abort()
另一个出现在level2中的方法是abort方法,他是一个可以允许你中途终止请求的方法。