javascript 同源策略和 JSONP 的工作原理
同源策略
同源策略是一个约定,该约定阻止当前脚本获取或操作另一域的内容。同源是指:域名、协议、端口号都相同。
简单地说,A 服务器下的 a 端口执行 ajax 程序,不能获取 B 服务器或者 A 服务器的其他端口,是一种隔离策略。但是这个策略对标签的 src 属性无效,这个属性就是请求其他服务器的,所以可以用<script>标签的 src 属性请域外服务器。
JSONP
JSONP 的原理是通过 script 标签的 src 属性可以跨域的特点,发送请求到外域服务器,外域服务器返回 js 代码,客户端接受响应,然后就执行了这段 js 代码。
具体过程是:
- 动态创建 script 标签,并添加到 html 中。
- 定义回调函数。
- 客户端传递一个 callback 参数(值为回调函数的函数名)给服务器,然后服务器端返回数据时,会将这个 callback 参数作为函数名将 json 数据包裹住,一起发给客户端。
- 然后客户端就执行了这段 js 代码。
JSONP 和 AJAX 的区别
- ajax 的核心是通过 xmlHttpRequest 对象获取服务器数据
- jsonp 是动态创建 script 标签,利用它的 src 属性调用外域服务器的 js 脚本
- jsonp 只能用 get 请求,ajax 可以用 get 和 post
javascript 同源策略和 JSONP 的工作原理的更多相关文章
- [CORS:跨域资源共享] 同源策略与JSONP
Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分."同源策略"限制了JavaScript的跨站点调用 ...
- 同源策略与JSONP
[CORS:跨域资源共享] 同源策略与JSONP Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分.“同源策略”限制了J ...
- 同源策略与 JSONP CORS
同源策略与 JSONP CORS 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以 ...
- Javascript同源策略对context.getImageData的影响
在本机测试HTML5 Canvas程序的时候,如果用context.drawImage()后再用context.getImageData()获取图片像素数据的时候会抛出错:SECURITY_ERR: ...
- 同源策略与JSONP劫持原理
同源策略 浏览器中有两个安全机制,一个浏览器沙盒(Sandbox),另一个就是同源策略(Same Origin Policy,简称SOP) ,下面介绍同源策略.同源是指同协议.同域名.同端口,必须三同 ...
- Ajax跨域请求 同源策略与Jsonp
同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...
- javascript 同源策略及web安全
同源策略为什么而生? JS可以读取/修改网页的值. 一个浏览器中,打开一个银行网站和一个恶意网站,如果恶意网站能够对银行网站进行修改,那么就会很危险. 你打开了恶意网站和另一个网站,如果没有同源限制, ...
- 同源策略和Jsonp、CORS
一.同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之 ...
- 第十九篇 同源策略与Jsonp
同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的 ...
随机推荐
- java正则表达式备忘
最近框架和爬虫上常要处理字符串匹配和替换的场景,备忘. 非贪婪模式 比如要匹配html文本中的连接,例如a href="www.abc.com/xyz/o"需要替换为a href= ...
- PostgreSQL中的partition-wise aggregation
partition-wise aggregation允许对每个分区分别执行的分区表进行分组或聚合.如果GROUP BY子句不包括分区键,则只能在每个分区的基础上执行部分聚合,并且必须稍后执行最终处理. ...
- semi-join子查询优化 -- semi-join Materialization策略
semi-join Materialization 是用于semi-join的一种特殊的子查询物化技术.通常包含两种策略:1.Materialization/lookup2.Materializati ...
- 025批量删除mac文件名中的空格
一. 在准备王陆语料库资料时发现给的录音文件好多带有空格,不喜欢这样的,而且不方面mac下搜索和查找,所以想把它全部删掉,命令如下: find . -name "* *"| whi ...
- 在asp.net core中使用NLog
第一步:nuget 引入 NLog.Web.AspNetCore 4.5+ 第二步:放入nlog.config <?xml version="1.0" encoding= ...
- 取未清PO逻辑
注意这里的 GR qty [ WEMNG] 和 Open Quantity [OBMNG] *&---------------------------------------------- ...
- [LeetCode] 531. Lonely Pixel I 孤独的像素 I
Given a picture consisting of black and white pixels, find the number of black lonely pixels. The pi ...
- [LeetCode] 749. Contain Virus 包含病毒
A virus is spreading rapidly, and your task is to quarantine the infected area by installing walls. ...
- rabbitmq设置消息优先级、队列优先级配置
1.首先在consume之前声明队列的时候,要加上x-max-priority属性,一般为0-255,大于255出错 -----配置队列优先级 配置成功后rabbitmq显示: 2.在向exchan ...
- Component 'TABCTL32.OCX'错误的处理方法
错误:Component 'TABCTL32.OCX' or one of its dependencies not correctyly registered:a file is missing o ...