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
相关推荐
由于浏览器允许不同源的`<script>`标签加载和执行,开发者可以利用这一点来实现跨域请求。 ### JSONP工作原理 1. **客户端(浏览器)**:在JavaScript中,我们创建一个`<script>`元素,并设置其`src`属性为服务器...
基于ajax方式的跨域请求jsonp的前后台代码
这一步对于简单的跨域请求不是必需的。 2. **配置Tomcat以支持HTTPS**: - 在Tomcat的`conf/server.xml`文件中,找到或添加`<Connector>`标签以启用HTTPS连接: ```xml maxThreads="150" scheme=...
`cors-filter-1.7.jar`就是一个用于处理CORS请求的过滤器库,它可以帮助我们在服务器端设置合适的响应头,允许特定的跨域请求。 **使用`cors-filter-1.7.jar`** 引入`cors-filter-1.7.jar`后,我们需要在`web.xml`...
- 跨域:JSONP可以绕过同源策略,实现跨域数据请求。 - 简单:只需一个`<script>`标签即可实现,无需复杂的XMLHttpRequest。 缺点: - 安全性:由于JSONP依赖于动态执行用户提供的脚本,存在安全风险,如XSS攻击。 ...
### 跨域Access-Control-Allow-Origin解决方案 #### 一、同源策略概述 同源策略(Same-origin policy)是一项重要的安全措施,由Netscape...- 对于GET请求,还可以考虑使用JSONP技术作为跨域解决方案的一种备选方案。
描述中的“java web版 跨域 ajax+jsonp例子源代码.zip”进一步强调这是基于Java Web的示例,用于解决JavaScript通过AJAX进行跨域请求时遇到的问题。AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面...
JSONP(JSON with Padding)是一种解决跨域请求的方法,它利用了script标签不受同源策略限制的特性,使得客户端可以请求跨域的JSON数据。同源策略是浏览器的一个安全机制,它阻止了网页的脚本向非同源服务器发送请求...
`cors-filter-1.7.jar` 是一个用于处理跨域请求的过滤器,通常集成在Java Web应用服务器中,如Tomcat、Jetty等。CORS Filter基于Java Servlet规范,可以拦截HTTP请求并添加适当的CORS响应头,允许来自不同源的请求...
在这种背景下,Jsonp(JSON with Padding)应运而生,它是一种允许跨域数据交互的技术,特别适用于Ajax请求。 Jsonp的核心思想是利用HTML `<script>`标签的src属性可以不受同源策略限制的特性。它的工作流程如下: ...
### 跨域请求的几种方式 ...综上所述,JSONP和CORS是两种常用的跨域请求解决方案。JSONP适用于简单的GET请求场景,而CORS则更为通用,可以处理各种类型的HTTP请求。在实际项目中,应根据具体需求选择合适的技术方案。
同时,通过获取`jsonpCallback`参数并将其与JSON数据一起包装成一个函数调用的形式返回给客户端,从而实现JSONP的跨域请求。 ```java @RequestMapping("/selectApplyPeoples") public void insertScore...
JSONP(JSON with Padding)是一种解决跨域请求的方法,主要用于解决不同域之间因浏览器同源策略限制而无法进行AJAX请求的问题。在AJAX请求中,浏览器的同源策略限制了与当前页面不同域的服务器进行数据交互,而...
【Java通过Filter实现允许服务跨域请求的方法】 在Web开发中,浏览器的同源策略是一项安全机制,限制了JavaScript只能发起与当前页面同源(协议、域名和端口相同)的HTTP请求。然而,随着前后端分离的发展,跨域...
在Spring框架中处理JSONP跨域请求是一个常见问题,尤其当开发者需要从前端JavaScript代码中调用不同域上的RESTful服务时。由于浏览器的安全限制,同源策略防止了不同域的文档或脚本间的交互,这使得传统的AJAX请求不...
然而,`<script>`标签可以加载任何源的JavaScript代码,JSONP就是利用这一点来实现跨域请求的。 1. **JSONP的工作原理**: JSONP的基本思路是,客户端向服务器发送请求时,会提供一个回调函数名。服务器接收到请求...
通过上述分析和示例代码,我们可以看到在Java环境中解决JSP中的AJAX跨域访问问题并不复杂,关键在于理解跨域访问的原理以及正确配置CORS或实现JSONP。无论是通过设置响应头来启用CORS,还是通过包装数据来实现JSONP...
在Spring Boot中,可以通过添加`@CrossOrigin`注解到控制器方法或者全局配置,来允许特定来源的跨域请求。这解决了由于同源策略限制导致的前后端分离时的数据交互问题。 4. JSONP: JSONP是一种绕过同源策略的技术...
本文将深入探讨前端与后端之间的通信、跨域请求的概念、原因以及解决策略,并通过Java和JavaScript(JS)的示例来讲解如何处理这些问题。 首先,前端通常指的是用户在浏览器中直接交互的部分,包括HTML、CSS和...