前端面试笔试知识汇总2(含答案) 前端面试笔试知识(22)
浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。下面是一段浏览器的JavaScript脚本。 var url = 'http://api.alice.com/cors'; var xhr = new XMLHttpRequest(); xhr.open('PUT',url,true); xhr.setRequestHeader('X-Custom-Header','value'); xhr.send(); 上面代码中,HTTP请求的方法是PUT,并且发送一个自定义头信息X-Custom-Header。 浏览器发现,这是一个非简单请求,就自动发出一个"预检"请求,要求服务器确认可以这样请求。下面是这个"预检"请求的HTTP头信息。
Origin: Access-Control-Request-Headers: X-Custom-Header Host: api.alice.com;???????????? Accept-Language: en-US Connection: keep-alive;????????? User-Agent: Mozilla/5.0... "预检"请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin,表示请求来自哪个源。 一旦服务器通过了"预检"请求,以后每次浏览器正常的CORS请求,就都跟简单请求一样,会有一个Origin头信息字段。服务器的回应,也都会有一个Access-Control-Allow-Origin头信息字段。 CORS与JSONP的使用目的相同,但是比JSONP更强大。 JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。 34、Localstrage判断浏览器是否支持(编辑:ASP站长网) |