跨域的方式有多种今天我呢,给大家带来的是JSONP接口的操作和接口

JSONP的接口到处都有

今天先拿BOOS直聘的来给大家演示一遍吧

首先找到boss官网:https://www.zhipin.com/

步骤一:然后打开控制台找到network面板;

步骤二:清空

步骤三:在搜索框内输入一点文字,然后注意network面板

步骤四:找到xhr类型数据请求,当然不一定只是xhr,也有可能是script或其他

步骤五:点击其中一个

步骤六:找到 request url 后面的地址

拿到这个接口你就得去尝试慢慢得删掉点东西,看能不能更精简,这样你会看得更舒服;使用起来也是更加得如鱼得水,而后你要测试他是不是JSONP格式的

先说说JSONP是怎么产生的:

1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准

2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>);

3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理;

4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据;

5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。

6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。

7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

扯了这么多,再来点实际的吧

以下案例是刚刚随便找的几个做得玩一玩

这个是百度天气接口

CSS

		<style>
div{
width: 900px;
margin: 0 auto;
background-color: skyblue;
padding: 50px 0;
text-align: center;
}
table{
border-collapse: collapse;
width: 800px;
margin: 0 auto;
}
thead tr{
background-color: #ccc;
}
input{
width: 796px;
height: 30px;
display: block;
margin: 0 auto;
outline: none;
font-size: 14px;
}
tbody td{
text-align: center;
}
</style>

  

 HTML

<div>
<h1>天气预报查询</h1>
<input type="text" name="" id="" value="" placeholder="输入你要查询的城市,按Enter执行.... "/>
<table border="1">
<thead>
<tr>
<th>日期</th>
<th>天气</th>
<th>风向</th>
<th>温度</th>
</tr>
</thead>
<tbody> </tbody>
</table>
</div>

  JavaScript

<script type="text/javascript">
var ipt = document.getElementsByTagName("input")[0];
var tbody = document.getElementsByTagName("tbody")[0];
ipt.onkeyup= function(event){
if(event.keyCode ===13){
// alert(ipt.value)
var script= document.createElement("script");
script.src="https://api.asilu.com/weather/?city="+ipt.value+"&callback=fn";
document.body.appendChild(script);
document.body.removeChild(script);
}
}
function fn(data){
var str = "";
for(var i=0;i<data.weather.length;i++){
str += "<tr>\
<td>"+data.weather[i].date+"</td>\
<td>"+data.weather[i].weather+"</td>\
<td>"+data.weather[i].wind+"</td>\
<td>"+data.weather[i].temp+"</td>\
</tr>";
}
tbody.innerHTML = str; } </script>

  

更多接口请看以下链接(控制台里面看字段详细情况):

天气:http://www.lovemysoul.vip/API/API-TQ.html

IP查询:http://www.lovemysoul.vip/API/API-IP.html

身份证查询:http://www.lovemysoul.vip/API/API-SFZ.html

手机归属地:http://www.lovemysoul.vip/API/API-gsd.html

翻译:http://www.lovemysoul.vip/API/API-FY.html

如若觉得本文有任何技术问题或是措辞问题各种问题都可以直接评论哦

JSONP以及端口的更多相关文章

  1. 实例操作JSONP原理

    絮语:按这个步骤走,你就会明白JSONP是什么鬼. 1.工程目录: ng-mywork demo.html test.js 2.nginx的server配置 server { listen ; ser ...

  2. 疯狂的JSONP

    何为跨域?何为JSONP?JSONP技术能实现什么?是否有必要使用JSONP技术? 跨域 就是由于JavaScript同源策略的限制,使得a.com域名下的js无法操作b.com或c.a.com域名下 ...

  3. 通过扩展让ASP.NET Web API支持JSONP

    同源策略(Same Origin Policy)的存在导致了"源"自A的脚本只能操作"同源"页面的DOM,"跨源"操作来源于B的页面将会被拒 ...

  4. 跨域的jsonP

    1.出现原因:因为web中的同源策略(域名,协议,端口号)限制了跨域访问.   2.区别于json (个人理解)json是数据交换格式,jsonp是数据通信中的交互方式   3.jsonp的get与p ...

  5. 原生JS封装Ajax插件(同域&&jsonp跨域)

    抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...

  6. 说一说javascript跨域和jsonp

    同源策略 在浏览器的安全策略中“同源策略”非常如雷贯耳,说的是协议.域名.端口相同则视为同源,域名也可换成IP地址,不同源的页面脚本不能获取对方的数据. 要是想使用XMLHttpRequest或者常规 ...

  7. 使用XHR2或Jsonp实现跨域以及实现原理

    我们直接使用XMLHttpRequset请求外部接口 会发现 报这个错误 其实浏览器成功发送请求并拿回了数据  只是浏览器的同源策略 禁止了获取  在xhr2 服务器端支持跨域 需要在响应头增加 Ac ...

  8. Ajax操作如何实现跨域请求 (JSONP和CORS实现Ajax跨域的原理)

    由于浏览器存在同源策略机制,同源策略阻止ajax (XMLHttpRequest) 从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 特别的:由于同源策略是浏览器的限制,所以请求的发送和响 ...

  9. 深入理解jsonp跨域请求原理

    在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据.解决ajax的跨域问题有两种方法: 一.jsop 二.XMLHttpRequest2中 ...

随机推荐

  1. 【git】git hello world

    以前不怎么会用. http://blog.sina.com.cn/s/blog_1485511700102xdig.html git add 文件夹/            添加整个文件夹及内容 gi ...

  2. FJUTOJ-周赛2016-12-16

    注:fjutoj基本每周都有一次周赛,欢迎大家都来参加! 网址:http://59.77.139.92/index.jsp A题:来源 POJ 2773 题意:给两个数m和k,问第k 个和m 互素的数 ...

  3. 洛谷P2756 飞行员配对方案问题

    二分图裸题,找他的最大匹配即可 #include<bits/stdc++.h> using namespace std; int n,m,ans; ; int to[N]; struct ...

  4. react-native-echarts在打包时出现的坑

    react-native-echarts目前是RN开发中使用echarts图表最好的插件了,用法与Echarts完全一致,默认提供了三个属性: option (object): The option ...

  5. bugku crypto easy-crypto

    长度不一的01字符串 就要考虑是不是摩斯密码 用这个py脚本: from __future__ import print_function a = input("input the stri ...

  6. PL2303HX在Windows 10下面不装安装驱动的解决办法(Code:10)

    Prolific在很早之前推出了一款名为PL2303HX的芯片, 用于USB转RS232, 这款芯片使用的范围非常广, 并且年代久远. 但是这款芯片因为用的特别多, 所以中国就有很多厂家生产了仿造的P ...

  7. element 给table的个别表格框添加样式 ---重构里面的组件

    <el-table ref="singleTable" :show-header='false' :data="tableData" align='cen ...

  8. sql server 复制表结构

    1:复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from ...

  9. CF 543C Remembering Strings

    https://cn.vjudge.net/problem/CodeForces-543C 题目 You have multiset of n strings of the same length, ...

  10. Quartus16.1布线优化选择,重编译可能会满足时序

    流程 (1)在默认的优化编译下,时序违例. (2)在assignments中选择setting. (3)根据需求,选择不同的优化方式,目前选择性能优先. (4)可以发现时序满足要求. 以上.