跨域请求-JSONP
原理:通过不受访问限制<script>标签发送请求。
下面做了一个例子,以供参考:
前端代码:
<script type="text/javascript"> //测试jsonp function handleResponse(data){ Util.log(data); } var script = document.createElement("script"); //script.src = "http://freegeoip.net/json/?jsonp=handleResponse"; script.src = "http://localhost:8080/CookieTest/json?callback=handleResponse"; document.body.insertBefore(script,document.body.firstChild); </script>
后台代码:
request.setCharacterEncoding("UTF-8");
JSONObject json = new JSONObject();
json.put("contentType", request.getContentType());
json.put("contentLength", request.getContentLength());
json.put("contextPath", request.getContextPath());
json.put("remoteAddr", request.getRemoteAddr());
PrintWriter out = response.getWriter();
String callback = request.getParameter("callback");
if(null == callback || "".equalsIgnoreCase(callback)){
out.print(json);
}else{
out.print(callback + "(" + json + ");");
}
out.flush();
out.close();
回调函数说明:
其实JSOP回调函数的原理通过上面的例子应该很容易理解,其实后台返回的不是一个json对象,而是将需要返回的json对象作为回调函数的参数进行返回。因为前端是使用<script>标签,加载到的数据会当作js来运行。到这里应该明白jsonp是如何请求数据以及回调函数的原理了吧!!!
注意:若服务器端接口直接返回json对象,则前端无法调用回调函数。
上述为个人理解,理解不到位的地方,望指正!!!
相关推荐
10. **安全性**:简述AJAX应用可能面临的安全问题,如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等,并给出相应的防护措施。 总的来说,这个综合案例旨在帮助开发者全面理解AJAX技术,并具备使用AJAX构建高效、...
6. **跨域问题**:介绍同源策略及其对Ajax请求的影响,以及如何通过JSONP或CORS解决跨域问题。 在“Ajax与Atlas开发系列课程(2):Ajax开发介绍”中,我们将进一步探讨Ajax的实际应用,特别是微软的Atlas框架,它是...
2. **AJAX库与框架**:简述jQuery和其他流行库(如Prototype、Dojo)如何简化Ajax开发。 3. **跨域问题与解决方案**:探讨Ajax的同源策略限制及JSONP、CORS等跨域解决方案。 ### 第五章 - PHP与Ajax结合 1. **创建...
- $.ajax()方法:理解异步请求的基本结构,学习设置参数进行GET和POST请求。 - JSONP和跨域:介绍JSONP的工作原理,解决跨域问题。 第六天:jQuery插件 - 插件使用:了解如何引入和使用第三方jQuery插件,如...
- **Jsonp**:JSON with Padding,用于跨域数据请求。 ##### 四、Redis(缓存数据库) - **Redis**:一种基于内存的操作系统,可用于高速缓存和消息队列。 ##### 五、Quartz - **Quartz**:强大的作业调度框架。...
7. **AJAX和Fetch API**:介绍如何进行异步数据请求,包括XMLHttpRequest对象的使用和现代Fetch API的介绍。 8. **ES6及后续版本的新特性**:涵盖箭头函数、类、模板字符串、解构赋值、模块导入导出、Proxy、...
6. **AJAX和Fetch API**:用于实现页面的异步数据交换,了解请求和响应的处理方式。 7. **ES6及后续版本的新特性**:如箭头函数、模板字符串、解构赋值、类和模块系统(import/export)。 8. **错误处理**:学习...
04 服务端循环链接请求来收发消息 05 补充 06 udp套接字 07 recv与recvfrom的区别及基于udp实现ntp服务 08 基于tcp实现远程执行命令 09 基于tcp实现远程执行命令测试结果 10 粘包现象 11 粘包解决方法 第31章 01 ...
1. 使用JSONP(JSON with Padding)技术,通过动态创建script标签的方式发送请求。 2. 利用window.name的特性,在不同的域之间传递信息。 3. 使用HTML5的window.postMessage方法实现安全的跨域通讯。 4. 通过创建...
- JSONP、CORS、代理服务器等。 25. instanceof的实现原理: - 判断一个对象是否是某个构造函数的实例。 26. React组件的生命周期: - 包括挂载、更新和卸载过程中的生命周期方法。 27. Flux思想: - 是一种...
11. **跨域通信**:理解同源策略及其限制,以及如何通过JSONP、CORS等方式进行跨域请求。 12. **Web存储**:如localStorage和sessionStorage,用于在浏览器中持久化数据。 13. **前端框架预览**:可能简述React、...