什麼是AJAX
是異步的JavaScript 和 XML
面試題:
請使用原生js來發送AJAX請求
let request = new XMLHttpRequest()
request.open('get', '/xxx') // 配置request
request.send()
request.onreadystatechange = ()=>{
if(request.readyState === 4){
if(request.status >= 200 && request.status < 300){
console.log('說明請求成功')
}else if(request.status >= 400){
console.log('說明請求失敗')
}
}
}
同源政策
如果你不是 xxxxx.com 裡的js 你就不能向這個域名發送 任何ajax請求
隻有 協定+端口+域名 一模一樣才允許發ajax請求
【注意要】一模一樣 一模一樣 一模一樣 一模一樣
1、http://baidu.com 可以向 http://www.baidu.com 發送請求嗎 ???
不能!!!要一模一樣才行
2、http://baidu.com:80 可以向 http://baidu.com:81 發送 ajax 請求嗎???
不能!!!端口不一樣
cors 跨域
cors 可以告訴浏覽器 不需阻止
cross-origin resource sharing 跨站資源共享
非要響應就在伺服器寫:
response.setHeader('Access-Control-Allow-Origin','xxxxxx 網址 xxxxxx')
為什麼要有同源政策?
因為原頁面用form 送出到另一個域名之後,
原頁面的腳本無法擷取新頁面中的内容
是以浏覽器認為是安全的
而ajax是可以讀取響應内容的
是以浏覽器不能允許你這樣做(請求已經發出去了 隻是沒有響應而已)
同源政策的本質是:
一個域名的js
在未經允許的情況下不得讀取另一個域名的内容
但浏覽器并不阻止你向另一個域名發送請求