jsonp的工作原理
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--
src 属性他自带有跨域功能,浏览器没有限制。
-->
<script>
function jsonp(info) {
//已经帮我转成对象。
console.log(info);
} /*
* 我的目的是什么:
* http://www.baidu.com/asdfsadf/asdf.php
* 然后这个地址返回,我想把这个返回的数据获取。
* 我的目的是获取第三方网站的资源数据。
*
* */
</script>
<!--
这个标签没有跨域的限制,浏览器没有对这个标签进行一个禁用。 jQuery
//之前这段代码是写在http://www.wu.com
$.ajax({
url:"http://www.baidu.com/asdfasdfasdf",
type:"get", success:function(){ }
})
//假设没有加dataType:jsonp
//这个jQuery 底层默认是去发送一个XMLHttpRequest 的请求
//但是请求的资源是http://www.baidu.com 的资源 ,直接跨域的。
//现在我是dataType:jsonp
//jQuery 底层 var srcipt=document.createElement("srcipt");
//srcipt.src="http://www.baidu.com" //跨域
-->
<script src="http://api.wu.com/api/04jsonp1.php?callback=jsonp"></script>
</head>
<body>
</body>
</html>
跨域:
我在www.xiaoyanzi.com 站点下面的一个页面想去访问 http://www.baidu.com 下面的一个资源.
http://www.xiaoyanzi.com a.html
http://www.baidu.com b.html 1:document
a.html 想访问b.html 下面的元素 顶级域名都不一样。 http://www.xiaoyanzi.com a.html
http://api.xiaoyanzi.com b.html 主域名一样。 a.html 想访问b.html 默认不允许。
同源:域名,端口,协议必须一样。
(不同源就跨域)
但是主域名都一样。
所以我怎么去解决这个跨域的问题。
http://www.z.com a.html 使用js 添加一个document.domian ="zhuwu.com";
http://api.z.com b.html 使用js 添加一个document.domian ="zhuwu.com";
2:ajax 跨域
在http://www.z.com 有一个a.html 想去访问http://www.baidu.com/afads.php
有跨域的特性。(浏览器觉得会有安全问题。)
a.html
$.ajax({
url:"http://www.baidu.com",
type:"",
})
请求可以发送出去,数据回不来。
$.ajax({
url:"http://www.baidu.com",
type:"",
dataType:"jsonp", })
底层的原理
在jQuery 的参数不加 dataType:"jsonp",
默认是发送一个xmlHttpRequest 请求,使用这个对象去发送请求。你浏览器根本就接收不到数据。
添加了:dataType:"jsonp",
jQuery 里面
var script=document.createElement("script");
script.src="http://www.baidu.com/demo.js"; 跨域访问是我们以后比较常见的操作:
1: 在我的网站下面去访问一些其它网站提供的一些服务。
2: 天气预报,查询机票,查询火车票。 查询ip 地址。电话号码归属地
jsonp的工作原理的更多相关文章
- javascript 同源策略和 JSONP 的工作原理
同源策略 同源策略是一个约定,该约定阻止当前脚本获取或操作另一域的内容.同源是指:域名.协议.端口号都相同. 简单地说,A 服务器下的 a 端口执行 ajax 程序,不能获取 B 服务器或者 A 服务 ...
- 浅谈JSONP 的工作原理
小编最近在工作中经常用到 jsonp 这个东西, 表示之前从来没用过 最近稍微研究了下 当然很多内容来源于网上 收集整理 你懂的 ~~~ 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, ...
- JSONP 的工作原理是什么?
利用<script>标签没有跨域限制的"漏洞"来达到与第三方通讯的目的. 当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形 ...
- jsonp 跨域原理详解
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略).这一策略对于Java ...
- ajax工作原理及jsonp跨域详解
一.Ajax简介 ajax = 异步 JavaScript 和 XML. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.我们知道,传统的网页(不使用ajax)如果需要更新内容, ...
- ajax工作原理,Jsonp原理
Ajax工作原理是 相当于在用户和服务器之间加了-个中间层(AJAX引擎),使用户操作与服务器响应异步化. 对于用户请求ajax引擎会做一些数据验证和数据处理,不是所有请求都提交给服务器,当需要从服务 ...
- ajax及其工作原理
1.关于ajax的名字 ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. 2. ...
- Ajax工作原理及实例
1.关于ajax的名字 ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. 2. ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
随机推荐
- [转]使用python来操作redis用法详解
转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...
- Mongodb - 二进制安装
0.概述 mongodb版本:4.0.2 linux版本:redhat 6.5 安装方式:二进制安装 1.关闭防火墙 /etc/init.d/iptables status/etc/init.d/ip ...
- 开启mysql的远程访问权限
改表法 1.登陆mysql mysql -u root -p 2.修改mysql库的user表,将host项,从localhost改为%.%这里表示的是允许任意host访问,如果只允许某一个ip访问, ...
- mysql 用户/密码/权限操作
由于最近使用mysql遇到了修改用户密码的问题,所以一块学习了一下关于用户的相关操作: 1. 创建新账户 CREATE USER 'jeffrey'@'localhost'; 2. 账户设置密码 #当 ...
- [LintCode/LeetCode]——两数和、三数和、四数和
LintCode有大部分题目来自LeetCode,但LeetCode比较卡,下面以LintCode为平台,简单介绍我AC的几个题目,并由此引出一些算法基础. 1)两数之和(two-sum) 题目编号: ...
- 4572: [Scoi2016]围棋 轮廓线DP KMP
国际惯例的题面:这种题目显然DP了,看到M这么小显然要状压.然后就是具体怎么DP的问题.首先我们可以暴力状压上一行状态,然后逐行转移.复杂度n*3^m+3^(m*2),显然过不去. 考虑状态的特殊性, ...
- 给Linux系统管理员准备的Nmap命令的29个实用范例
map即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口.它会扫描远程在线主机,该主机的操作系统,包过滤器和 ...
- bzoj 1095 括号序列求两点距离
大致题意: 给一棵树,每个节点最开始都是黑色,有两种操作,1.询问树中相距最远的一对黑点的距离 2.反转一个节点的颜色 一种做法: 建立出树的括号序列,类似这样: [A[B][C]],所以长度为3*n ...
- db2 codepage
首先分两个层面,DB2 CODEPAGE和OS CODEPAGE(DB2SET DB2CODEPAGE相当于设定了当前实例的OS的CODEPAGE) Linux系统查看CODEPAGE的方法:在终端输 ...
- spring cloud: 使用consul来替换config server
上一篇提到了,eureka 2.x官方停止更新后,可以用consul来替代,如果采用consul的话,其实config server也没必要继续使用了,consul自带kv存储,完全可以取代confi ...