国产精品久久久久久久,亚洲中文字幕在线观看,中文字幕在线观看,鲁大师在线日韩免费  
您現(xiàn)在的位置:首頁 ? 知識庫 ? 軟件開發(fā) 軟件開發(fā)
解決ajax跨域的方法原理詳解之Cors方法
發(fā)布日期:2017-09-06

1、神馬是跨域(Cross Domain)

對于端口和協(xié)議的不同,只能通過后臺來解決。

一句話:同一個ip、同一個網(wǎng)絡(luò)協(xié)議、同一個端口,三者都滿足就是同一個域,否則就是

跨域問題了。而為什么開發(fā)者最初不直接定為一切可跨域的呢?默認的為什么都是不可跨域呢?這就涉及到了同源策

略,為了系統(tǒng)的安全,由Netscape提出一個著名的安全策略。現(xiàn)在所有支持JavaScript的瀏覽器都會使用這個策略。

所謂同源是,域名,協(xié)議,端口相同。當(dāng)我們在瀏覽器中打開百度和谷歌兩個網(wǎng)站時,百度瀏覽器在執(zhí)行一個腳本的

時候會檢查這個腳本屬于哪個頁面的,即檢查是否同源,只有和百度同源的腳本才會被執(zhí)行,如果沒有同源策略,那

隨便的向百度中注入一個js腳本,彈個惡意廣告,通過js竊取信息,這就很不安全了。

說白點就是post、get的url不是你當(dāng)前的網(wǎng)站,域名不同。例如在aaa.com/a.html里面,表單的提交action是bbb.com/b.html。

不僅如此,www.aaa.com和aaa.com之間也屬于跨域,因為www.aaa.com是二級域名,aaa.com是根域名。

JavaScript出于安全方面的考慮,是不允許跨域調(diào)用其他頁面的對象的(同源策略 Same-Origin Policy)。

關(guān)于JavaScript能否跨域通信的詳細說明,見下表:

http://www.a.com/a.js訪問以下URL的結(jié)果

URL說明是否允許通信
http://www.a.com/b.js 同一域名下 允許
http://www.a.com/script/b.js 同一域名下不同文件夾 允許
http://www.a.com:8000/b.js 同一域名,不同端口 不允許
https://www.a.com/b.js 同一域名,不同協(xié)議 不允許
http://70.32.92.74/b.js 域名和域名對應(yīng)ip 不允許
http://script.a.com/b.js 主域相同,子域不同 不允許
http://a.com/b.js 同一域名,不同二級域名(同上) 不允許
http://www.b.com/b.js 不同域名 不允許


2、為嘛要跨域

基于兩個方面:

a. web應(yīng)用本身是部署在不同的服務(wù)器上

b.基于開發(fā)的角度 --- 前后端分離

web應(yīng)用本身是部署在不同的服務(wù)器上,對應(yīng)的域名也就有所不同

比如百度。

需要在不同的域之間,通過ajax方式互相請求,是非常常見的需求。

基于開發(fā)的角度

現(xiàn)在提倡的前后端分離開發(fā)。

前端負責(zé)寫html、css、js代碼,需要向后臺要數(shù)據(jù),渲染到頁面。

后臺負責(zé)寫業(yè)務(wù)邏輯,向前臺提供數(shù)據(jù)。

后臺提供的數(shù)據(jù),作為前端如何才能拿到呢?

這就需要前后端進行協(xié)作。

后臺,只負責(zé)提供API,就是一個ulr,比如,

前臺,需要通過ajax發(fā)起請求,去獲取數(shù)據(jù)。

在開發(fā)的時候,

后臺的代碼部署在一個服務(wù)器上。

前端的代碼部署在另外一個服務(wù)器上。

前臺在向后臺通過ajax去請求數(shù)據(jù)的時候,就涉及到跨域。

就比如,我們的后臺已經(jīng)開發(fā)好了一個功能,獲取當(dāng)前首頁面的輪播圖中的電影數(shù)據(jù),給前臺提供的url如下:

我是前端開發(fā)人員,需要獲取該數(shù)據(jù),然后渲染到頁面上。

此時,必須要使用ajax方式。


3、腫么跨域

關(guān)于跨域,有多達七八種方案。

其中有如下三種方案,是需要重點關(guān)注:

a. Cors

b. Jsonp(重點)

c.代理


Cors

本意:cross origin resource share,跨資源共享

場景:服務(wù)端的代碼在我的控制范圍之內(nèi),換言之,后臺提供的api代碼,我是有權(quán)限去操作的。只需要在服務(wù)端編寫代碼,瀏覽器端不用寫任何代碼。

這種方式最簡單,只需要在服務(wù)端設(shè)置幾個頭信息即可。

在node中,設(shè)置如下:

res.setHeader('Access-Control-Allow-Origin', "*"); //針對哪個域名可以訪問,*表示所有

res.setHeader('Access-Control-Allow-Credentials', true); //是否可以攜帶cookie

res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');


  • 1.公司登記注冊于2003年1月27日,清遠市桑達電子網(wǎng)絡(luò)媒體有限公司
    2.公司2006年起成為清遠市政府定點協(xié)議供貨商,電子采購供貨商
    3.公司2007年被清遠市相關(guān)政府部門評為安防行業(yè)狀元
    4.公司2007年起成為長城電腦清遠如意服務(wù)站(SP368)
    5.公司2007年承建清遠市橫河路口電子警察工程,開創(chuàng)清遠電子警察先河。
  • 6.公司2007年起成為IBM合作伙伴、公司2010年底成為金蝶軟件清遠金牌代理(伙伴編號:30030013)
    7.公司組團隊參加南方都市報組織的創(chuàng)富評選,獲廣東80強。公司申請多項軟件著作權(quán)、專利權(quán)
    8.2016年起公司成為粵東西北地區(qū)為數(shù)不多的雙軟企業(yè),確立“讓軟件驅(qū)動世界,讓智能改變生活!"企業(yè)理想
    9.2016-01-29更名為廣東互動電子網(wǎng)絡(luò)媒體有限公司
    10.2021-01-13更名為廣東互動電子有限公司
  • 投資合作咨詢熱線電話:0763-3391888 3323588
  • 做一個負責(zé)任的百年企業(yè)! 天行健,君子以自強不息;地勢坤,君子以厚德載物;
    為用戶創(chuàng)造價值! 讓軟件驅(qū)動世界; 讓智能改變生活; 超越顧客期望,幫助顧客成功;
    對客戶負責(zé),對員工負責(zé),對企業(yè)命運負責(zé)!幫助支持公司的客戶成功;幫助忠誠于公司的員工成功!
  • 聯(lián)系電話:0763-3391888 3323588 3318977
    服務(wù)熱線:18023314222 QQ:529623964
  • 工作QQ:2501204690 商務(wù)QQ: 602045550
    投資及業(yè)務(wù)投訴QQ: 529623964
    微信:小米哥 微信號:qysed3391888
    騰訊微博:桑達網(wǎng)絡(luò)-基石與起點
  • E-MAIL:222#www.nongkaibiao.com ok3391888#163.com (請用@替換#)
在線客服
  • 系統(tǒng)集成咨詢
    點擊這里給我發(fā)消息
  • 網(wǎng)站\微信\軟件咨詢
    點擊這里給我發(fā)消息
  • 售后服務(wù)
    點擊這里給我發(fā)消息
  • 投資合作
    點擊這里給我發(fā)消息