前言:前兩天PC端商城開發(fā)到最后階段,準(zhǔn)備放到測試服務(wù)器,發(fā)現(xiàn)post接口出錯,想到是存在跨域,什么是跨域,以及跨域的解決方案。
同一協(xié)議下,同一域名。同一端口下的訪問屬于同源策略,除此之外都是跨域。跨域的解決方式有兩種,一種是客戶端解決,一種是服務(wù)端解決。
1、jsonp解決方案
jsonp的原理就是利用script標(biāo)簽的src屬性動態(tài)加載,不受同源策略的影響.
var scrt = document.createElement('script');
scrt.src = 'http://www.baidu.com/a.json?callback=jsonStr';
document.body.appendChild(scrt);
var jsonStr = function (data){
alert(data);
}
僅支持get請求
2、通過CORS解決
CORS是什么 cross-origin-resource-sharing 跨域資源共享,它允許瀏覽器向跨源服務(wù)器發(fā)送http請求,克服了ajax同源請求資源的限制。瀏覽器發(fā)現(xiàn)ajax請求資源,就會自動添加頭信息,服務(wù)端只需要添加相關(guān)響應(yīng)頭信息,即可實現(xiàn)ajax跨域請求。但是cors請求有兼容性 IE8 - ie9不兼容此此策略。瀏覽器先以options請求方式發(fā)送預(yù)請求,從而獲知對跨域資源請求所支持的http方法。
3、node轉(zhuǎn)發(fā)層搭建
慎重選擇是否搭建中轉(zhuǎn)層,意味著性能的,服務(wù)器壓力,開銷都會相應(yīng)的增加。
4、nginx 反向代理
通過nginx解析url,判斷到底應(yīng)該轉(zhuǎn)發(fā)到哪臺服務(wù)器上。
寫的不好的地方還望大家及時反饋與糾正,本著共同學(xué)習(xí)與進步宗旨不斷前進?。。?/p>