`
doing19852810
  • 浏览: 3475 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java跨域请求-JSONP

阅读更多

java  web中如何跨域请求呢?

使用jsonp,详情请参考:http://json-p.org/

页面代码如下:

 

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <script type="application/javascript"  >  
        function jsonpCallback(result) {    
            alert(JSON.stringify(result));    
            /*for(var i in result) {    
                alert(i+":"+result[i]);//循环输出a:1,b:2,etc.    
            }  */  
        }    
        var JSONP=document.createElement("script");    
        JSONP.type="text/javascript";    
        JSONP.src="http://192.168.0.100:8080/tv_mobile/video/text2?callback=jsonpCallback";    
        document.getElementsByTagName("head")[0].appendChild(JSONP);    
     </script>  
</head>  
<body>  
  
</body>  
</html> 

 

在浏览器中访问的效果:

 

 

 

 

后台采用spring mvc:

@ResponseBody  
    @RequestMapping(value = "/text2",produces=SystemHWUtil.RESPONSE_CONTENTTYPE_JAVASCRIPT2 )  
    public String text2(HttpServletRequest request, HttpServletResponse response,String contentType2,String callback)  
            throws IOException {  
        String content = null;  
        Map map = new HashMap();  
  
        map.put("fileName", "a.txt");  
        content=JSONPUtil.getJsonP(map, callback);  
        System.out.println(content);  
        return content;  
  
    }  

 

 

JSONPUtil.getJsonP 静态方法的实现如下:

/*** 
     * 用于jsonp调用 
     * @param map : 用于构造json数据 
     * @param callback : 回调的javascript方法名 
     * @return 
     */  
    public static String getJsonP(Map map,String callback)  
    {  
        ObjectMapper mapper = new ObjectMapper();  
        String content = null;  
        try {  
            content = mapper.writeValueAsString(map);  
            System.out.println(content);  
        } catch (JsonGenerationException e) {  
            e.printStackTrace();  
        } catch (JsonMappingException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        if(ValueWidget.isNullOrEmpty(callback)){  
            return content;  
        }  
        return callback+"("+content+")";  
    } 

 

依赖jackson 库

后台返回的内容是:jsonpCallback({"fileName":"a.txt"})

content type是

 

注意:后台返回的形式是:函数名(参数),此处的函数名就是回调函数的名称

 

参考:

spring mvc设置应答体的content type

AJAX 跨域请求 - JSONP获取JSON数据:http://justcoding.iteye.com/blog/1366102

 

App Framework发送JSONP请求(3):

http://hw1287789687.iteye.com/blog/2190719

分享到:
评论

相关推荐

    跨域访问解决方法-jsonp

    由于浏览器允许不同源的`&lt;script&gt;`标签加载和执行,开发者可以利用这一点来实现跨域请求。 ### JSONP工作原理 1. **客户端(浏览器)**:在JavaScript中,我们创建一个`&lt;script&gt;`元素,并设置其`src`属性为服务器...

    ajax跨域请求jsonp前后台代码

    基于ajax方式的跨域请求jsonp的前后台代码

    使用JSONP完成HTTP和HTTPS之间的跨域访问

    这一步对于简单的跨域请求不是必需的。 2. **配置Tomcat以支持HTTPS**: - 在Tomcat的`conf/server.xml`文件中,找到或添加`&lt;Connector&gt;`标签以启用HTTPS连接: ```xml maxThreads="150" scheme=...

    jsonp相关jar包 cors-filter-1.7.jar和java-property-utils-1.9.jar

    `cors-filter-1.7.jar`就是一个用于处理CORS请求的过滤器库,它可以帮助我们在服务器端设置合适的响应头,允许特定的跨域请求。 **使用`cors-filter-1.7.jar`** 引入`cors-filter-1.7.jar`后,我们需要在`web.xml`...

    json和jsonp数据格式返回

    - 跨域:JSONP可以绕过同源策略,实现跨域数据请求。 - 简单:只需一个`&lt;script&gt;`标签即可实现,无需复杂的XMLHttpRequest。 缺点: - 安全性:由于JSONP依赖于动态执行用户提供的脚本,存在安全风险,如XSS攻击。 ...

    跨域Access-Control-Allow-Origin解决方案.docx

    ### 跨域Access-Control-Allow-Origin解决方案 #### 一、同源策略概述 同源策略(Same-origin policy)是一项重要的安全措施,由Netscape...- 对于GET请求,还可以考虑使用JSONP技术作为跨域解决方案的一种备选方案。

    java版 解决跨域问题CORS ajax+jsonp例子源代码.zip

    描述中的“java web版 跨域 ajax+jsonp例子源代码.zip”进一步强调这是基于Java Web的示例,用于解决JavaScript通过AJAX进行跨域请求时遇到的问题。AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面...

    借助script进行Http跨域请求:JSONP实现原理及代码

    JSONP(JSON with Padding)是一种解决跨域请求的方法,它利用了script标签不受同源策略限制的特性,使得客户端可以请求跨域的JSON数据。同源策略是浏览器的一个安全机制,它阻止了网页的脚本向非同源服务器发送请求...

    web项目跨域jar包

    `cors-filter-1.7.jar` 是一个用于处理跨域请求的过滤器,通常集成在Java Web应用服务器中,如Tomcat、Jetty等。CORS Filter基于Java Servlet规范,可以拦截HTTP请求并添加适当的CORS响应头,允许来自不同源的请求...

    Ajax + Servlet 跨域访问(Jsonp技术)

    在这种背景下,Jsonp(JSON with Padding)应运而生,它是一种允许跨域数据交互的技术,特别适用于Ajax请求。 Jsonp的核心思想是利用HTML `&lt;script&gt;`标签的src属性可以不受同源策略限制的特性。它的工作流程如下: ...

    跨域请求的几种方式

    ### 跨域请求的几种方式 ...综上所述,JSONP和CORS是两种常用的跨域请求解决方案。JSONP适用于简单的GET请求场景,而CORS则更为通用,可以处理各种类型的HTTP请求。在实际项目中,应根据具体需求选择合适的技术方案。

    ajax跨域请求

    同时,通过获取`jsonpCallback`参数并将其与JSON数据一起包装成一个函数调用的形式返回给客户端,从而实现JSONP的跨域请求。 ```java @RequestMapping("/selectApplyPeoples") public void insertScore...

    jsonp跨域请求实现示例

    JSONP(JSON with Padding)是一种解决跨域请求的方法,主要用于解决不同域之间因浏览器同源策略限制而无法进行AJAX请求的问题。在AJAX请求中,浏览器的同源策略限制了与当前页面不同域的服务器进行数据交互,而...

    JAVA通过Filter实现允许服务跨域请求的方法

    【Java通过Filter实现允许服务跨域请求的方法】 在Web开发中,浏览器的同源策略是一项安全机制,限制了JavaScript只能发起与当前页面同源(协议、域名和端口相同)的HTTP请求。然而,随着前后端分离的发展,跨域...

    详解java 中Spring jsonp 跨域请求的实例

    在Spring框架中处理JSONP跨域请求是一个常见问题,尤其当开发者需要从前端JavaScript代码中调用不同域上的RESTful服务时。由于浏览器的安全限制,同源策略防止了不同域的文档或脚本间的交互,这使得传统的AJAX请求不...

    详解Java Ajax jsonp 跨域请求

    然而,`&lt;script&gt;`标签可以加载任何源的JavaScript代码,JSONP就是利用这一点来实现跨域请求的。 1. **JSONP的工作原理**: JSONP的基本思路是,客户端向服务器发送请求时,会提供一个回调函数名。服务器接收到请求...

    JAVA的AJAX跨域访问

    通过上述分析和示例代码,我们可以看到在Java环境中解决JSP中的AJAX跨域访问问题并不复杂,关键在于理解跨域访问的原理以及正确配置CORS或实现JSONP。无论是通过设置响应头来启用CORS,还是通过包装数据来实现JSONP...

    vue-springboot-cros_jsonp:前初步跨域,cors,jsonp(新版springmvc)实现

    在Spring Boot中,可以通过添加`@CrossOrigin`注解到控制器方法或者全局配置,来允许特定来源的跨域请求。这解决了由于同源策略限制导致的前后端分离时的数据交互问题。 4. JSONP: JSONP是一种绕过同源策略的技术...

    前端后端+跨域请求+java/js

    本文将深入探讨前端与后端之间的通信、跨域请求的概念、原因以及解决策略,并通过Java和JavaScript(JS)的示例来讲解如何处理这些问题。 首先,前端通常指的是用户在浏览器中直接交互的部分,包括HTML、CSS和...

Global site tag (gtag.js) - Google Analytics