產生跨域的“罪魁禍首”只有一個:那就是瀏覽器,具體說是瀏覽器的“同源策略”。
瀏覽器的同源策略用于隔離潛在惡意文件的重要安全機制。
跨域產生的原因是下面三點:
1. 瀏覽器的限制
2. 跨域
3. 請求是XHR(XMLHttpRequest)
對于第一個原因:很多人認為,發生跨域問題是服務器的行為:服務器不允許瀏覽器調用,其實不然,真正的原因是瀏覽器處于安全的考慮,當發現發出的請求是跨域請求時,就會做一些安全的校驗,如果校驗未通過,則就會報跨域安全問題。說白了,就是瀏覽器“多管閑事”,不是服務器不允許瀏覽器調用。
驗證這種說法的方法是:
第一步:后端會有日志輸出,說明后端正確收到請求了。
第二步:請求的狀態碼也是200表示請求成功,后端已經成功響應請求結果了,前端也成功獲取了響應結果。
第三步:上面兩部一切正常,但是瀏覽器控制臺報錯了,報告跨域安全問題。
對于第二個原因:請求不跨域,就會產生跨域的問題
對于第三個原因:也就是說如果發送的請求不是XHR請求,則就不會出現跨域安全問題,就算是跨域請求,瀏覽器也不會報錯。
瀏覽器發送請求的途徑有:
```
1. <img src="">
2. <script src="">
```
驗證方法是:使用img標簽或者script標簽的src屬性訪問接口,然后看瀏覽器控制臺是不會報跨域安全錯誤的。