AJAX 及 同源策略/ CORS跨域

什麼是AJAX

是異步的JavaScript 和 XML面試

面試題:

請使用原生js來發送AJAX請求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請求
【注意要】如出一轍 如出一轍 如出一轍 如出一轍跨域

一、http://baidu.com 能夠向 http://www.baidu.com 發送請求嗎 ???
不能!!!要如出一轍才行瀏覽器

二、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
在未經容許的狀況下不得讀取另外一個域名的內容
但瀏覽器並不阻止你向另外一個域名發送請求cors

相關文章
相關標籤/搜索