91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jsonp跨域訪問服務

發布時間:2020-06-30 21:18:01 來源:網絡 閱讀:711 作者:wenqiang147 欄目:web開發

前段時間在做產品開發的時候,需要與公司網站那邊進行交互,我們所開發的產品上線后是放在一個域名下,公司網站那塊是在另一個域名下,這樣在頁面中調用

網站那邊的接口時就存在跨域的問題,當時為了不修改網站那邊的接口,所以采用在服務端通過webservice方式進行調用網站接口,問題也很快解決了,當時我就在想

如果需要在js中直接訪問的話,就涉及到到跨域的問題,那么怎么做才能解決這個問題呢,我上網找了一些資料,最后采用的是jsonp的方式來解決的。下面我來給大家分享下

用jsonp方式解決跨域問題。分為以下步驟:

1、引入jquery.js,使用$.ajax()來定義jsonp,如下:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script type="text/javascript" src="${path}/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function(){
$("#jsonp").click(function(){
$.ajax({
url:"/demo/jsonp.action",
type:"GET",
async:false,
dataType:"jsonp",
jsonp:"jsonpCallback",
jsonpCallback:"showAge",
success:function(data){
//alert(data.name);
}
}
);
});
});
function showAge(data){
alert(data.age);
}
</script>
</head>
<body>
<a id="jsonp" href="">使用jsonp</a>
</body>
</html>

2、服務器端處理:

package com.mall.web.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSONObject;
@Controller
@RequestMapping("/demo/")
public class DemoAction {
private HttpServletRequest request;
private HttpServletResponse response;
@ModelAttribute
public void setRequestAndResponse(HttpServletRequest request,HttpServletResponse response){
this.request = request;
this.response = response;
}
@RequestMapping(value="jsonp",method=RequestMethod.GET)
public void jsonp(){
 try {  
        response.setContentType("text/plain");  
        response.setHeader("Pragma", "No-cache");  
        response.setHeader("Cache-Control", "no-cache");  
        response.setDateHeader("Expires", 0);  
        PrintWriter out = response.getWriter();       
        JSONObject resultJSON = new JSONObject();
        resultJSON.put("name", "wen");
        resultJSON.put("age", "17");
        String jsonpCallback = request.getParameter("jsonpCallback");//客戶端請求參數  
        System.out.println("-------------------->"+jsonpCallback);
        System.out.println("-------------------->"+resultJSON.toJSONString());
        out.println(jsonpCallback+"("+resultJSON.toJSONString()+")");//返回jsonp格式數據  
        out.flush();  
        out.close();  
      } catch (IOException e) {  
       e.printStackTrace();  
      }  
}
}

該訪問的url地址為:/demo/jsonp.action?jsonpCallback=“showAge”

在上述事例中,需要注意以下幾點:

1、jsonp中只能使用get請求,ajax請求中dataType為jsonp

2、jsonp定義的url地址中的參數名默認為callback

3、jsonpCallback定義的時jsonp定義的參數對應的值,也是服務器需要回調的函數,若jsonpCallback為定義值,默認回調success函數

4、服務器接受請求后,需要返回符合參數傳遞過來的回調函數如: 

out.println(jsonpCallback+"("+resultJSON.toJSONString()+")");//返回jsonp格式數據


以上就是jsonp的訪問過程,這里需要大家好好理解。因為使用jsonp跨域訪問,需要客戶端和服務端定義一個規則,即回調函數的規則,所以

在開發的過程中需要客戶端和服務端的開發人員共同定義一個規則。

其實我們還可以通過$.get()和$.getJson()方式來跨域訪問,這里就不跟大家細說了,如果感興趣的朋友,可以自己去了解下,今天就給大家分享到這,

我們下期再見,接下來會為大家分享android的一些知識。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新泰市| 江永县| 子长县| 凤凰县| 合阳县| 凤山市| 中西区| 郁南县| 梅河口市| 灵石县| 文昌市| 泉州市| 深圳市| 通渭县| 固安县| 泸溪县| 龙山县| 宜州市| 菏泽市| 河东区| 东宁县| 海安县| 综艺| 时尚| 镇赉县| 泽州县| 西盟| 闸北区| 浮梁县| 沁阳市| 保定市| 石泉县| 高州市| 文安县| 潜江市| 涿鹿县| 崇阳县| 安西县| 泰宁县| 汝城县| 平凉市|