天天看點

ajax同源跨域,AJAX 及 同源政策/ CORS跨域

什麼是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

在未經允許的情況下不得讀取另一個域名的内容

但浏覽器并不阻止你向另一個域名發送請求