Javascript是前端開發中必不可少的一門語言,它可以實現許多交互效果和動態調整頁面的效果,但是隨著前后端分離的發展,Ajax跨域問題得到了更多的關注。簡單來說,Ajax跨域是指在一個域名下使用JavaScript訪問其他域名下的資源。本文將從實踐的角度來總結一下Ajax跨域問題并給出解決方案。
Ajax跨域產生的原因是瀏覽器的同源策略(Same-Origin Policy),所謂同源指的是協議、域名、端口號完全相同。同源策略可以防止惡意站點訪問用戶的敏感信息,但是對于正常的跨域資源共享會產生限制。比如說,現在有一個站點“a.com”想訪問“b.com”的資源,那么瀏覽器就會攔截這個請求,不允許它直接訪問“b.com”的資源。
var xhr = new XMLHttpRequest(); xhr.open('GET', 'http://b.com/resource', true); xhr.send();
上述代碼會發生“被攔截”的情況,怎么辦呢?一般情況下,解決Ajax跨域問題可以采取以下幾種方式:
JSONP
JSONP是跨域通信的一種方案,它的核心思想是利用