面试准备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 ...
最新文章
- Kprobe在Linux kernel debug中的应用
- C++的sort排序法
- php里Array2xml
- java 人脸识别 demo_java引用Arcface,实现人脸识别(demo)
- vue-router之路由属性配置说明
- VS2019调试查看变量_你很可能需要知道这个调试小技巧
- net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...
- UserDetailsService详解
- django 1.8 官方文档翻译: 1-2-4 编写你的第一个Django应用,第4部分
- 全球最快65W闪充!OPPO Reno Ace正式发布 高达限量定制版售价仅3599元
- 免费开源!仿微信仿陌陌类APP源代码整项目开源,包括ADT项..
- Unable to start LiveReload server
- mac HBuX连接夜神模拟器,连接真机
- model.load_state_dict(state_dict, strict=False)
- 齐齐哈尔计算机科学与技术学院,齐齐哈尔职工大学官网
- 外包公司到底能不能选择
- Matlab 各种画图函数用法
- Tecplot —— 探针提取数据集任一点数值
- 简单讲讲前端路由概念
- Python PDF转JPG
热门文章
- c里面的fflush函数
- 白盒测试的学习之路----(五)TestNG的参数分离
- Javascript中相同Function使用多个名称
- [转载]表的设计命名的十个注意点
- 使用C# WinForm实现打印小票的功能
- 在Angular外部使用js调用Angular控制器中提供的函数方法或变量
- libevent 编程疑难解答
- 美国数学家维纳智力早熟,11岁就上了大学,他曾在1935-1936年 应邀参加中国清华大学讲学,一次他参加某个重要会议,年轻的脸孔 引人注意,于是有人询问他的年龄,他回答说“我年龄的立方是个4位数
- 爬虫实例4 爬取网络小说
- canopy java_在Windows上安装带有Enthought Canopy的Theano