面试准备JSONP(一)
①、response 添加 header
我们在 Servlet 请求返回时添加如下代码:
1 //*表示支持所有网站访问,也可以额外配置相应网站
2 resp.setHeader("Access-Control-Allow-Origin", "*");
②、JSONP 方式
首先我们要修改 index.jsp 页面的 ajax 请求:
1 $.ajax({
2 type:"get",
3 async:false, 4 url:"http://localhost:8080/JavaWeb01/getPassWordByUserNameServlet?userName=Tom", 5 dataType:"jsonp",//数据类型为jsonp 6 jsonp:"backFunction",//服务端用于接收callBack调用的function名的参数 7 success:function (data) { 8 alert(data["passWord"]); 9 }, 10 error:function () { 11 alert("error"); 12 } 13 14 });
注意:我们修改了 dataType 的数据类型为 jsonp,并且新增了 jsop 属性值为 “backFunction”。
④、nginx 转发
JSONP优缺点:
1.优点
(1)不像XMLHttpRequest对象实现Ajax请求那样受到同源策略限制,JSONP可以跨越同源策略
(2)在浏览器中兼容性好
(3)在请求完毕后可以哦你给过调用callback方式回传结果,将controller和view分开,jsonp服务只提供纯服务的数据,页面渲染由自己定义
2.缺点
(1)只支持get请求不支持post请求
(2)只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间javascript调用问题
(3)调用失败的时候不会返回各种HTTP状态码
(4)安全性低,如果提供JSONP服务的一方有漏洞,他返回的javascript内容容易被人控制
2.常见Http请求头
http消息头,在超文本传输协议( Hypertext Transfer Protocol ,HTTP)的请求和响应消息中,协议头部分的组件,http消息头用来准确描述正在获取的资源,服务器或者客户端行为,定义了http事务中的具体操作参数。
请求头:
Accept: /(客户端能接收的资源类型)
Accept-Language: en-us(客户端接收的语言类型)
Connection: Keep-Alive(维护客户端和服务端的连接关系)
Host: localhost:8080(连接的目标主机和端口号)
Referer: http://localhost/links.jsp(告诉服务器我来自于哪里)
User-Agent: Mozilla/4.0(客户端版本号的名字)
Accept-Encoding: gzip, deflate(客户端能接收的压缩数据的类型)
If-Modified-Since: Tue, 11 Jul 2017 18:23:51 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)
Date: Tue, 18 Jul 12:15:02 GMT(客户端请求服务端的时间)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 18 Jul 2017 12:15:02 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.helloyoucan.com.(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据)
Pragma: no-cache(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 18 Jul 2017 12:18:03 GMT(服务端响应客户端的时间)
转载于:https://www.cnblogs.com/menghan94/p/11182745.html
面试准备JSONP(一)相关推荐
- “约见”面试官系列之常见面试题之第六十七篇之jsonp原理和实现(建议收藏)
一. 同源策略 所有支持Javascript的浏览器都会使用同源策略这个安全策略.看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略. 现在所有支持JavaScript 的浏览 ...
- “约见”面试官系列之常见面试题第十五篇之jsonp(建议收藏)
目录 什么是jsonp 首先先知道 为什么需要JSONP? JSONP的原理 jsonp的第一种方式,将目标作为js形式加载过来,尽管其实对方是一个php 一.Ajax工作原理 二.Jsonp工作原理 ...
- 说说json和jsonp 也许你会明白它的原理 含有jQuery实例 蛋疼 ,我面试的时候被卡了 赶紧写一个回顾...
说到AJAX就会不可避免的面临两个问题, 第一个是AJAX以何种格式来交换数据? 第二个是跨域的需求如何解决? 这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以 ...
- 前端跨域jsonp的细节,挡住面试官的连环提问
1.前言 在前端面试中,想必每一个人都会被问到跨域相关的问题,背过八股文的小伙伴肯定对跨域的解决对答如流,常见的跨域解决方案在网上有很多整理,但是如果问到实现的细节,你是否能够手写实现或者深入解读呢? ...
- “约见”面试官系列之常见面试题之第六十五篇之ajax如何解析jsonp(建议收藏)
json是一种轻量级交互格式,本质上都是字符串,常用于前后端的数据交互,本质上就是字符串. 前端解析后端数据 前端在解析后端发来的数据,使用JSON.parse()方法把字符串转为json对象. 前端 ...
- PHP面试内容 整理搜集 PHP面试涉及技术 一文回顾全部 主要含PHP面试命令列表 方法列表...
PHP面试时常涉及的内容总结 熟悉框架 逻辑题 快排 正则 数组函数.... 抽奖, 秒杀 数据库 优化,sql书写 缓存 redis mecache Linux命令 其他技术 sphinx, sw ...
- 那些巨头公司的前端面试都喜欢问些什么?
在过去的几年里,我在亚马逊和雅虎面试过很多专注于前端开发的Web开发者和软件工程师,在这篇文章中,我想分享一些面试技巧,帮助候选人为面试做好准备. 免责声明--本文并非旨在列出在前端面试中可能会被问到 ...
- 2016 实习招聘面试经历 - 3
文章写于 2016 年,旧的博客不维护了,一些文章直接迁移到这边来.本文为当时记录的第三篇,记得应该是腾讯音乐的内推一面/二面.后面内推挂了,走的实习招聘. 前端跨域 讲jsonp的原理, 如何实现 ...
- 前端面试问题(持续更新)
1.有关BFC的理解 2.盒模型的理解 3.box-sizing的理解 4.渐进增强 VS 优雅降级 5.url->页面加载完成的整个流程 6.js组成部分 7.如何跨域访问 8.js判断数组 ...
- 面试官:说说微信和淘宝扫码登录背后的实现原理?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | my.oschina.net/u/423172 ...
最新文章
- php pdo blob,PHP / PDO / MySQL:插入MEDIUMBLOB存储坏数据
- 中商惠民签约神策数据 致力为客户提供最优服务模式
- 20 年,缔造了 Google 互联网王国!
- 210106阶段三 文件I/O
- linux ubuntu 安装安卓,借助ubuntu电脑,给安卓手机安装整套ubuntu14.04
- Use BAdI to link appointment to a given opportunity during creation
- leetcode27 移除元素
- 从另一个角度看大数据量处理利器:布隆过滤器
- linux如何看分配固定共享内存段,Linux共享内存的查看和删除
- Linux学习总结(73)——Linux高频命令大总结
- oracle-关于分组函数的小细节
- 解决“找不到msvcr120.dll,需要重新安装服务 ”最终版本
- mac用什么软件测试硬盘好坏,Mac怎么测试硬盘速度?
- 自动化 c语言学不会,为什么那么多人学不会PLC自动化编程?
- 前端单位的解读和换算px/%/em/rem/vh/vm/vim/vmax
- 40款非常漂亮的免费下载 HTML5 CSS3 网站模板欣赏
- java编程:放苹果
- SQL查询列出每个班的班号和总人数
- android hal单元测试,用于HAL测试的参数化gtest
- 80老翁谈人生(198):老翁谈人生系列短文目录索引
热门文章
- jQuery jQuery on()方法
- STL中间set具体用法!!!!
- SQL 查找是否“存在“,别再 count 了,很耗费时间的!
- 已解决:TeamViewer使用的设备数量上限
- vsCode配置通过Github同步(Settings Sync)
- jasperReport - 多Table的PDF中文导出
- 内存泄漏检查工具 Visual Leak Detector(VLD)
- 17. Store newed objects in smart pointers in standalone statements
- java 内省 反射_理解Java的反射与内省及其区别
- 锁定文件失败 打不开磁盘“E:\HP02\HP01-cl1.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机