美文网首页
jsonp跨域解析

jsonp跨域解析

作者: newway_001 | 来源:发表于2019-08-27 11:18 被阅读0次

背景:

由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案。

什么是同源?

同源策略即:同一协议,同一域名,同一端口号。当其中一个不满足时,我们的请求即会发生跨域问题。

举个简单的例子:

http://www.abc.com:3000https://www.abc.com:3000的请求会出现跨域(协议不同)
http://www.abc.com:3000http://www.abc.com:3001的请求会出现跨域(端口不同)
http://www.abc.com:3000http://www.def.com:3000的请求会出现跨域(域名不同)

我们注意到src和href都可以进行跨域请求(一个get请求)

jsonp就是使用通源策略这一“漏洞”,实现的跨域请求(这也是jsonp跨域只能用get请求的原因所在)。想象一下,既然是个get请求,那么服务端一定可以接收到,并做出反馈。ok,知道这两点之后,我们开始具体使用jsonp进行跨域请求。


<button id="btn">点击</button> 
 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> 
 <script>   
 $('#btn').click(function(){            
var frame = document.createElement('script');           
frame.src = 'http://localhost:3000/article-list?name=leo&age=30&callback=func'; 
$('body').append(frame);    
    
});             
function func(res){         
alert(res.message+res.name+'你已经'+res.age+'岁了');     
}  </script>

上述代码其实是一个get请求,服务器对于get请求一定可以收到,并做出回应。

贴一下服务器的流程

router.get('/article-list', 
(req, res) => {  
console.log(req.query, '123'); 
 let data = {    
message: 'success!',    
name: req.query.name,    
age: req.query.age  
} 
 data = JSON.stringify(data)  
res.end('func(' + data + ')');});

看到返回的是'func(' + data + ')',到前端就是调用回调函数。

其实jsonp的整个过程就类似于前端声明好一个函数,后端返回执行函数。执行函数参数中携带所需的数据。

相关文章

  • jsonp

    jsonp的跨域原理解析 背景: 由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp就是为了解...

  • 对jsonp 的理解认识

    什么是跨域?为什么要跨域呢?听说jsonp能. 为什么jsonp能跨域呢?什么时候使用jsonp?怎么使用json...

  • 浏览器跨域问题,教你手写实现jsonp跨域

    跨域概述为什么会有跨域跨域解决办法:1、jsonp;2、后台代理手写实现jsonp跨域(包括服务器端代码) 跨域问...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • jsonp跨域解析

    背景: 由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解...

  • cookie和跨域数据交互(jsonp)

    cookie: 跨域数据交互(jsonp) 谁能跨域:JSONP/iframe-window.name/h5-PO...

  • 复习jsonp和promise

    一.jsonp 1.jsonp是跨域访问api,ajax不能跨域 2.在vue中使用jsonp首先要安装jsonp...

  • 跨域

    本文介绍跨域的八种方法: JSONP只要说到跨域,就必须聊到 JSONP,JSONP全称为:JSON with P...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

网友评论

      本文标题:jsonp跨域解析

      本文链接:https://www.haomeiwen.com/subject/hjisectx.html