老生常談跨域問題

前段時間在網上跟一個大廠聽說很NB的同行大佬聊天,而後大佬問了我一個問題,「在實際生產中前端怎麼解決跨域問題」 我當時就回答說咱們目前的情況是須要服務端作一些配合解決的,而後大佬很不滿意的暗示了我一下JSONP用過嗎?我當時就以爲很難以想象,實際生產中就只有get請求嗎?並且這玩意兒在實際生產中都基本不用的,我開始有點懷疑我是否是掉隊了,因此今天大概梳理下這塊的知識點。前端


瀏覽器在請求不一樣域的資源時,會由於同源策略的影響請求不成功,這就是一般被提到的「跨域問題」。做爲前端開發,跨域常常遇到,咱們一般所說的JS跨域,指的是在處理跨域請求的過程當中,技術面會偏瀏覽器端較多一些,那什麼是跨域呢?
JavaScript出於安全方面的考慮,不容許跨域調用其餘頁面的對象,當協議、子域名、主域名、端口號,其中的任意一個不一樣的時候都是不一樣的域,那也就是算作跨域。
請求跨域的時候並非請求發不出去,請求能發出去,服務端能收到請求並正常返回結果,只是結果被瀏覽器攔截了,正是由於同源策略的限制,同源策略的要求是協議、域名、和端口號都徹底一致才能夠進行正常的通訊。跨域

須要說明的幾個點:
1.若是是協議和端口形成的跨域問題,前端是無能爲力的。
2.在跨域問題上,域只是經過訪問URL的頭部(.com或者.cn以及以前部分)來識別的,而不是根據域名對應的IP地址是否相同去判斷的。
3.在實際生產中JSONP的侷限性很大,基本上不會去考慮,使用概率很小。瀏覽器


目前咱們的情況是在服務器端頭部增長配置:安全

header( "Access-Control-Allow-Origin:*" );
header( "Access-Control-Allow-Methods:POST,GET" );

各位路過的大佬有什麼優秀的方案嗎?請不吝賜教服務器

相關文章
相關標籤/搜索