体彩排列五 www.8r31a.com.cn 体彩排列五 > 上网技巧 > 电脑小技巧 > 使用jsonp进行跨域访问

使用jsonp进行跨域访问

时间:2018-06-28 09:02 作者:QQ地带 我要评论

一、使用场景
 
  当我们请求非本服务器的资源的时候,浏览器会禁止访问,并提示不允许跨域访问。此时我们可以使用jsonp这种请求方式,从其他服务器获取资源。在客户端调用提供jsonp支持的接口,获取jsonp格式的数据。
 
二、客户端的实现
 
  客户端使用jsp,用js发送ajax请求,代码如下:
 
复制代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">
        <title>jsonp</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <script type="text/javascript" src="./js/jquery-1.9.1.min.js"></script>
</head>
<body>
        <script type="text/javascript">
jQuery(document).ready(function() {
 
    $.ajax( {
        type : "get",
        async : false,
        url : "//127.0.0.1:8089/test2/TestServlet?id=1",
        dataType : "jsonp",
        jsonp : "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
        jsonpCallback : "Tcallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
        success : function(json) {
            alert('name: ' + json.name + ',age: ' + json.age);
        },
        error : function() {
            alert('fail');
        }
    });
 
});
</script>
</body>
</html>
复制代码
 
 
  此段代码相当于get请求//127.0.0.1:8089/test2/TestServlet?id=1&callback=Tcallback .
 
三、服务器实现
 
  服务器端使用servlet实现,代码如下:
 
复制代码
public class TestServlet extends HttpServlet
{
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        String id = request.getParameter("id");
        String callback = request.getParameter("callback");//值为Tcallback 
        String name = "zhangsan";
        int age = 20;
        String json = String.format("%s({\"name\":\"%s\", \"age\":%s})",
                callback, name, age);//返回的数据
        PrintWriter out = response.getWriter();
        out.print(json);
        out.flush();
        out.close();
    }
}

标签: JSONP
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告

  • 人民日报评论员:牢牢把握新时代中国共产党的历史使命 2018-12-10
  • 在战火中诞生的党中央机关报(连载十) 2018-12-10
  • 国家公务员局调研组来抚州调研 2018-12-10
  • 拉萨市第三高级中学举行“四讲四爱”教育实践活动之军民共建协议签订仪式 2018-12-10
  • 张岂之:侯外庐翻译《资本论》 用马克思理论研究中国史 2018-12-09
  • 国际锐评:反制更快更强更准!中国坚决打赢对美贸易自卫反击战! 2018-12-09
  • 喜过端午:纽约华侨华人包粽子诵《离骚》赛龙舟 2018-12-08
  • 广西都安:微型客车隧道失控后被追尾 2018-12-08
  • 黑龙江省县(市、区)委统战部长培训班举办 2018-12-08
  • 罗志祥打造新男团正式出道 内含两名17年“快男” 2018-12-07
  • 大妈下台阶摔伤致残 银行被判承担15%责任 2018-12-07
  • 智媒云图(Intell Vision):缺陷检测 2018-12-07
  • 张根硕2013全新专辑《乐享主义》全碟试听 2018-12-06
  • 中信银行--北京频道--人民网 2018-12-06
  • 今天是“人民日报”的七十岁生日吗?祝贺她生日快乐!虽然我们的祝福有点微不足道,还是祝福我们的人民日报越办越好! 2018-12-05
  • 279| 358| 554| 535| 322| 255| 568| 409| 348| 100|