這次給大家?guī)?lái)怎樣用JS跨域?qū)崿F(xiàn)POST,JS跨域?qū)崿F(xiàn)POST的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來(lái)看一下。

10年積累的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有千山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
javascript 跨域是一個(gè)很常見(jiàn)的問(wèn)題,其中 jsonp 是一個(gè)最常用的手段,但是 jsonp 只支持 get,不支持 post,所以如果想通過(guò) jsonp 來(lái) post 一些數(shù)據(jù),就頭大了。
此處通過(guò)在一個(gè) iframe 中生成 form 表單的形式來(lái)實(shí)現(xiàn) post,并通過(guò) postMessage 來(lái)向調(diào)用者返回值。
第一步,我們先實(shí)現(xiàn)一個(gè)接受 jsonp 的后端代碼,至于用什么語(yǔ)言實(shí)現(xiàn),各位自已決定。
跨域是JavaScript出于安全方面的考慮,不允許瀏覽器在當(dāng)前訪問(wèn)的域名的頁(yè)面中的javascript的調(diào)用其他域名頁(yè)面中的對(duì)象。
跨域請(qǐng)求就是為了解決禁止跨域訪問(wèn)的問(wèn)題。
用jsonp的原因是json是javascript中的對(duì)象,而跨域訪問(wèn)中有圖片、css、javascript腳本文件等是不限制,因此你可以在頁(yè)面渲染時(shí)動(dòng)態(tài)在script標(biāo)簽設(shè)置src路徑,而這個(gè)路徑返回回來(lái)的就是json對(duì)象。
JavaScript出于安全方面的考慮,不允許跨域調(diào)用其他頁(yè)面的對(duì)象。但在安全限制的同時(shí)也給注入iframe或是ajax應(yīng)用上帶來(lái)了不少麻煩。這里把涉及到跨域的一些問(wèn)題簡(jiǎn)單地整理一下:
首先什么是跨域,簡(jiǎn)單地理解就是因?yàn)镴avaScript同源策略的限制,a.com 域名下的js無(wú)法操作b.com或是c.a.com域名下的對(duì)象。更詳細(xì)的說(shuō)明可以看下表:
特別注意兩點(diǎn):
第一,如果是協(xié)議和端口造成的跨域問(wèn)題“前臺(tái)”是無(wú)能為力的,
第二:在跨域問(wèn)題上,域僅僅是通過(guò)“URL的首部”來(lái)識(shí)別而不會(huì)去嘗試判斷相同的ip地址對(duì)應(yīng)著兩個(gè)域或兩個(gè)域是否在同一個(gè)ip上。
“URL的首部”指window.location.protocol +window.location.host,也可以理解為“Domains, protocols and ports must match”。
跨域:
瀏覽器對(duì)于javascript的同源策略的限制,例如a.cn下面的js不能調(diào)用b.cn中的js,對(duì)象或數(shù)據(jù)(因?yàn)閍.cn和b.cn是不同域),所以跨域就出現(xiàn)了.
實(shí)現(xiàn)方式:
基于script標(biāo)簽實(shí)現(xiàn)跨域
基于script標(biāo)簽實(shí)現(xiàn)跨域
基于jquery跨域
通過(guò)iframe來(lái)跨子域
XMLHttpRequest2 進(jìn)行跨域訪問(wèn)時(shí)需要服務(wù)器許可,不是任何域都接受跨域請(qǐng)求的。先來(lái)看一下從 Yahoo YQL 域返回的響應(yīng)頭(Response Header ):
HTTP/1.1?200?OK
Set-Cookie:?AO="o=1s=1dnt=1";?Version=1;?Domain=yahoo.com;?Max-Age=630720000;?Expires=Sat,?18-Jun-2033?10:07:41?GMT;?Path=/
Access-Control-Allow-Origin:?*
Cache-Control:?public,?max-age=899
Content-Type:?text/xml;charset=utf-8
Content-Encoding:?gzip
Vary:?Accept-Encoding
Date:?Sun,?23?Jun?2013?10:07:40?GMT
注意里面有一條標(biāo)識(shí) Access-Control-Allow-Origin:* ,這就表示允許跨域訪問(wèn),所以可以正常訪問(wèn)該域,而對(duì)于其他沒(méi)有該標(biāo)識(shí)的域就會(huì)出現(xiàn)禁止訪問(wèn)提示。
那么如何設(shè)置呢?如果要接受跨域訪問(wèn)請(qǐng)求,就必須在服務(wù)器端返回的資源中加入?Access-Control-Allow-Origin 頭標(biāo)識(shí),?Access-Control-Allow-Origin 的值可以是 URL?或 *,如果是 URL 則只會(huì)允許來(lái)自該 URL 的請(qǐng)求,* 則允許任何域的請(qǐng)求。比如,在 HTML 中可以設(shè)置:
meta?http-equiv="Access-Control-Allow-Origin"?content="*"
或
meta?http-equiv="Access-Control-Allow-Origin"?content=""
網(wǎng)頁(yè)名稱:javascript跨域,js跨域的解決方案
網(wǎng)頁(yè)地址:http://chinadenli.net/article11/dsessgd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、建站公司、python、靜態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)