新聞中心
前言

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、延壽ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的延壽網(wǎng)站制作公司
轉(zhuǎn)眼就是秋招季啦。經(jīng)歷了幾場(chǎng)筆試面試,屢次被問到關(guān)于如何實(shí)現(xiàn)跨域。老實(shí)說,之前都是紙上談兵,也沒有項(xiàng)目需要跨域,甚至覺得這個(gè)東西沒什么意義。直到今天項(xiàng)目中遇到了跨域問題,看了不少資料才理解跨域的普遍性和意義。特寫此篇文章整理自己所得。
轉(zhuǎn)自個(gè)人博客: 關(guān)于跨域
什么是跨域
一般來說,如果你在開發(fā)中需要進(jìn)行跨域操作(從一個(gè)非同源網(wǎng)站發(fā)送請(qǐng)求獲取數(shù)據(jù)),一般而言,你在瀏覽器控制臺(tái)看到的結(jié)果為:
XMLHttpRequest cannot load http://external-domain/service. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://my-domain’ is therefore not allowed access.
同源策略
說到跨域就不得不提“同源策略”。
同源策略是Web瀏覽器針對(duì)惡意的代碼所進(jìn)行的措施,為了防止世界被破壞,為了保護(hù)世界的和平,Web瀏覽器,采取了同源策略,只允許腳本讀取和所屬文檔來源相同的窗口和文檔的屬性。
那么,怎么判斷文檔來源是否相同呢?很簡(jiǎn)單,看三個(gè)部分: 協(xié)議、主機(jī)、端口號(hào)。只要其中一個(gè)部分不同,則不同源。
跨域的應(yīng)用場(chǎng)景
- 來自 home.cdxwcx.com 的文檔里的腳本讀取 developer.cdxwcx.com載入的文檔的屬性。
- 來自 home.cdxwcx.com 的文檔里的腳本讀取 text.segmentfault.com載入的文檔的屬性。
如何跨域
設(shè)置domain屬性
針對(duì)上述應(yīng)用場(chǎng)景的***種情況,可以設(shè)置Document對(duì)象的domain屬性。但是設(shè)置時(shí)使用的字符串必須具有有效的域前綴或者它本身。
PS: domain值中必須有一個(gè)點(diǎn)號(hào)。
PS: domain不能由松散的變?yōu)榫o繃的。
- //初始值 "home.cdxwcx.com"
- document.domain = "cdxwcx.com"; //OK
- document.domain = "home.cdxwcx.com"; //NO,不能由松散變緊繃
- document.domain = "example"; //NO,必須有一個(gè)點(diǎn)號(hào)
- document.domain = "another.com"; //NO, 必須是有效域前綴或其本身
JSONP
JSONP由兩部分組成: 回調(diào)函數(shù)和數(shù)據(jù)。
原理:通過動(dòng)態(tài)


咨詢
建站咨詢