av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

AJAX的跨域問(wèn)題解決方案

瀏覽:403日期:2022-06-12 08:02:24
目錄
  • 跨域的概述
    • 區(qū)別同源與不同源
    • 同源策略有什么用?
  • AJAX跨域解決方案
    • 方案一、設(shè)置響應(yīng)頭
    • 方案二、jsonp
    • 方案三、代理機(jī)制(httpclient)
  • 總結(jié)

    跨域的概述

    1. 跨域是指從一個(gè)域名的網(wǎng)頁(yè)去請(qǐng)求另一個(gè)域名的資源。比如從百度(https://baidu.com)頁(yè)面去請(qǐng)求京東(https://www.jd.com)的資源。
    2. 通過(guò)超鏈接、form表單提交、window.location.href、document.location.href、script標(biāo)簽、img標(biāo)簽等方式進(jìn)行跨域是不存在問(wèn)題的。但在一個(gè)域名的網(wǎng)頁(yè)中的一段js代碼發(fā)送AJAX請(qǐng)求去訪問(wèn)另一個(gè)域名中的資源,由于同源策略的存在導(dǎo)致無(wú)法跨域訪問(wèn),AJAX就存在這種跨域問(wèn)題。
    3. 同源策略是指一段腳本只能讀取來(lái)自同一來(lái)源的窗口和文檔的屬性,同源就是協(xié)議、域名和端口都相同。

    下面是使用AJAX發(fā)送請(qǐng)求跨域訪問(wèn)資源出現(xiàn)的問(wèn)題:請(qǐng)求的資源上不存在“訪問(wèn)控制允許源”標(biāo)頭:(就是被同源策略阻止了)

    區(qū)別同源與不同源

    區(qū)分同源和不同源的三要素:

    協(xié)議域名端口

    協(xié)議一致,域名一致,端口號(hào)一致,三要素都要一致,才是同源,其它一律都是不同源。

    同源策略有什么用?

    如果你剛剛在網(wǎng)銀輸入賬號(hào)密碼,查看了自己還有一萬(wàn) 元塊錢,緊接著訪問(wèn)一些不規(guī)矩的網(wǎng)站,這個(gè)網(wǎng)站可以訪問(wèn)剛剛的網(wǎng)銀站點(diǎn),并且獲取賬號(hào)密碼,那后果可想而知。所以,從安全的角度來(lái)講,同源策略是有利于保護(hù)網(wǎng)站信息的。

    AJAX跨域解決方案

    有一些情況下,我們是需要使用AJAX進(jìn)行跨域訪問(wèn)的。比如某公司的A頁(yè)面a.aresourse.com)有可能需要獲取B頁(yè)面b.bresourse.com)。

    方案一、設(shè)置響應(yīng)頭

    核心原理:跨域訪問(wèn)的資源允許你跨域訪問(wèn)。(被調(diào)用方允許你可跨域訪問(wèn))

    實(shí)現(xiàn):

    response.setHeader("Access-Control-Allow-Origin","http://localhost:8080/ajax/ajax7.html");//允許某個(gè)response.setHeader("Access-Control-Allow-Origin","*");//允許所有

    方案二、jsonp

    jsonp:json with padding

    • jsonp不是一個(gè)真正的AJAX請(qǐng)求。只不過(guò)可以完成AJAX的局部刷新效果。可以說(shuō)jsonp是一種類AJAX請(qǐng)求的機(jī)制。

    jsonp可以解決跨域問(wèn)題。
    注意:jsonp解決跨域的時(shí)候,只支持GET請(qǐng)求。不支持post請(qǐng)求。這是因?yàn)?code>jsonp本就是動(dòng)態(tài)的創(chuàng)建script標(biāo)簽從而達(dá)到跨域的效果。

    下面是動(dòng)態(tài)創(chuàng)建的代碼:

    效果展示:

    jQuery封裝了jsonp,也就是說(shuō)可以使用jQuery庫(kù)去進(jìn)行編寫jsonp代碼,方便。

    核心代碼如下:

    $.ajax({	type:"GET",	url:"跨域的url",	dataType:"jsonp",   //指定數(shù)據(jù)類型	jsonp:"fun",    //指定參數(shù)名(不設(shè)置的時(shí)候,默認(rèn)是”callback“)	jsonpCallback:"sayHello"   //指定回調(diào)函數(shù)的名字,不設(shè)置的時(shí)候,jQuery會(huì)自動(dòng)生成一個(gè)隨機(jī)的回調(diào)函數(shù),	//并且這個(gè)回調(diào)函數(shù)還會(huì)自動(dòng)調(diào)用success的回調(diào)函數(shù)})

    方案三、代理機(jī)制(httpclient)

    “調(diào)用方”解決跨域的問(wèn)題是這個(gè)思路的:讓發(fā)送出去的請(qǐng)求代理成是本域的
    如果資源是本域的,那就側(cè)面地進(jìn)行了跨域。

    使用Java程序怎么去發(fā)送get/post請(qǐng)求呢?【GET和POST請(qǐng)求就是HTTP請(qǐng)求】

    • 使用JDK內(nèi)置的APIjava.net.URL....),這些API是可以發(fā)送HTTP請(qǐng)求的。
    • 使用第三方的開(kāi)源組件,比如:apachehttpclient組件。(httpclient組件是開(kāi)源免費(fèi)的,可以直接用)。

    總結(jié)

    到此這篇關(guān)于AJAX的跨域問(wèn)題解決的文章就介紹到這了,更多相關(guān)AJAX跨域問(wèn)題內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: Ajax
    主站蜘蛛池模板: 蜜桃视频一区二区三区 | 国产精品久久av | 超碰成人免费 | 在线播放国产一区二区三区 | 亚洲一区二区三区在线 | 在线免费观看a级片 | 免费在线视频一区二区 | 午夜精品久久久久久久99黑人 | 中文字幕在线一区二区三区 | 国产一区二区三区高清 | 视频一区中文字幕 | 在线视频一区二区三区 | 最新黄色在线观看 | 亚洲网站观看 | 久久国产婷婷国产香蕉 | 在线成人av | 密室大逃脱第六季大神版在线观看 | 亚洲人一区 | 精品国产免费一区二区三区五区 | 国产视频欧美 | 国产欧美二区 | 久久精品无码一区二区三区 | 欧美一级淫片007 | 国产在线观看网站 | 国产精品成人一区二区三区吃奶 | 亚洲精品99999 | 亚洲综合99 | 精品亚洲一区二区三区 | 久久久999精品 | 日本天堂视频 | 国产伦精品一区二区三区四区视频 | 国产91在线播放 | 日本在线播放一区二区 | 亚洲男人天堂 | 日韩二区 | 亚洲欧美成人影院 | 成人婷婷| 男女羞羞视频大全 | 日韩视频 中文字幕 | 一区二区免费在线视频 | 三级欧美 |