java web支持jsonp的實(shí)現(xiàn)代碼
跨域說(shuō)明
跨域指請(qǐng)求和服務(wù)的域不一致,瀏覽器和H5的ajax請(qǐng)求有影響,而對(duì)服務(wù)端之間的http請(qǐng)求沒(méi)有限制。
跨域是瀏覽器攔截了服務(wù)器端返回的相應(yīng),不是攔截了請(qǐng)求。
jsonp跨域請(qǐng)求處理
Jsonp(JSON with Padding) 是 json的一種"使用模式",可以讓網(wǎng)頁(yè)從別的域名(網(wǎng)站)那獲取資料,繞過(guò)同源策略(若地址里面的協(xié)議、域名和端口號(hào)均相同則屬于同源),即跨域讀取數(shù)據(jù)。
jsonp:利用script標(biāo)簽可以跨域,讓服務(wù)器端返回可執(zhí)行的Javascript函數(shù),參數(shù)為要回發(fā)的數(shù)據(jù)??煽醋鰩в谢卣{(diào)函數(shù)的ajax請(qǐng)求。
js代碼
<script type="text/javascript">
$(function(){
/*
//簡(jiǎn)寫(xiě)形式,效果相同
$.getJSON("http://app.example.com/base/json.do?sid=1494&busiId=101&jsonpCallback=?",
function(data){
$("#showcontent").text("Result:"+data.result)
});
*/
$.ajax({
type : "get",
async:false,
url : "http:/XXX",
dataType : "jsonp",//數(shù)據(jù)類型為jsonp
jsonp: "jsonpCallback",//服務(wù)端用于接收callback調(diào)用的function名的參數(shù)
jsonpCallback:"自定義回調(diào)函數(shù)名"
success : function(data){
alert(data.info)
},
error:function(){
alert('fail');
}
});
});
</script>
java后端處理代碼
@ResponseBody
@RequestMapping(value = "/url", produces= MediaType.APPLICATION_JSON)
public String test(
HttpServletRequest request,
HttpServletResponse response) throws Exception{
String result = getResult();
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "private,no-cache,no-store,max-age=0");
response.setDateHeader("Expires", 0);
String str=request.getParameter("jsonpCallback");
if (str==null||str.equals("")) {
return result;
} else {
return str + "(" + result + ")";
}
}
CORS(協(xié)議跨域資源共享)(Cross-origin resource sharing)
它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而克服了AJAX只能同源使用的限制 詳細(xì)介紹 戳此
- Access-Control-Allow-Origin:* 允許所有域名的腳本訪問(wèn)該資源
- Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS 運(yùn)行什么方式訪問(wèn)資源
- Access-Control-Expose-Headers:x-requested-with 暴露的信息
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javafx 如何將項(xiàng)目打包為 Windows 的可執(zhí)行文件exe
文章介紹了三種將JavaFX項(xiàng)目打包為.exe文件的方法:方法1使用jpackage(適用于JDK14及以上版本),方法2使用Launch4j(適用于所有JDK版本),方法3使用InnoSetup(用于創(chuàng)建安裝包),每種方法都有其特點(diǎn)和適用范圍,可以根據(jù)項(xiàng)目需求選擇合適的方法,感興趣的朋友一起看看吧2025-01-01
詳解Java遞歸實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)的兩種方式
在開(kāi)發(fā)的過(guò)程中,很多業(yè)務(wù)場(chǎng)景需要一個(gè)樹(shù)形結(jié)構(gòu)的結(jié)果集進(jìn)行前端展示,也可以理解為是一個(gè)無(wú)限父子結(jié)構(gòu),常見(jiàn)的有報(bào)表指標(biāo)結(jié)構(gòu)、菜單結(jié)構(gòu)等,這篇文章主要介紹了Java遞歸實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)的兩種方式,需要的朋友可以參考下2022-10-10
java時(shí)間戳與日期相互轉(zhuǎn)換工具詳解
這篇文章主要為大家詳細(xì)介紹了java各種時(shí)間戳與日期之間相互轉(zhuǎn)換的工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決
這篇文章主要介紹了mybatis-plus IdWorker生成的Id和返回給前臺(tái)的不一致的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
java返回的List進(jìn)行add操作報(bào)錯(cuò)
本文主要介紹了java返回的List進(jìn)行add操作報(bào)錯(cuò),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

