美文网首页
JSONP学习笔记

JSONP学习笔记

作者: JianQiang_Ye | 来源:发表于2019-03-20 15:13 被阅读0次

1. parseInt(n,10)

以10进制的方式把字符串n转换为整型

2. git 回到以前的状态

git log
git reset 7fagfgdfgdfgdsf --hard

3. 随机数

Math.random() > 0.5

4. 图片加载成功和图片加载失败

image是图片便签
image.onload = function(){
    加载成功就执行这里的代码
}
imgae.onerror = function(){}

5. 怎么刷新当前页面?

window.location.reload()

6. 怎么用图片发请求?

利用图片的src发送get请求,不过注意要返回一个真的图片


7. 通过script的src也可以发请求

不过要在body里面创建script标签,并且注意server.js里要写application/javascript。好处是不用发送一张图片。这个方案叫SRJ:server render JavaScript

8. 监听一个标签,成功加载后就删掉

label.onload = function(e){
    e.currentTarget.remove()
}

9. srj只能用get请求。

10. script的src可以向不同源的网站发送请求。

11. 为什么JSONP不支持POST方法?

  1. 因为JSONP的原理是通过动态地创建script标签来发送数据
  2. 我们动态创建script的时候只能用get,不能用POST

JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

12. 什么是jsonp

JSONP是服务器与客户端跨源通信的常用方法。
最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小。
它的基本思想是,网页通过添加一个script元素,向服务器请求json数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定的回调函数里传回来。

JSONP

请求方:frank.com 的前端程序员(浏览器)
响应方:jack.com 的后端程序员(服务器)

请求方创建 script,src 指向响应方,同时传一个查询参数 ?callbackName=yyy
响应方根据查询参数callbackName,构造形如yyy.call(undefined, '你要的数据')
yyy('你要的数据')这样的响应.
浏览器接收到响应,就会执行 yyy.call(undefined, '你要的数据')
那么请求方就知道了他要的数据
这就是 JSONP

约定:

callbackName -> callback
yyy -> 随机数 frank12312312312321325()
jQuery 用法

 $.ajax({
 url: "http://jack.com:8002/pay",
 dataType: "jsonp",
 success: function( response ) {
     if(response === 'success'){
     amount.innerText = amount.innerText - 1
     }
 }
 })

13.实现yjq.com向mayun.com发送请求


  1. 在yjq.com:8001处发送http://localhost:8002/pay请求
pay.addEventListener('click', function (e) {
            var script = document.createElement('script')
            document.body.appendChild(script)
            script.src = 'http://localhost:8002/pay'
            e.curretTarget.remove()
        })
  1. 在mayun.com的server.js处修改代码:
if(path === '/pay'){
            response.statusCode = 200
            var number = fs.readFileSync('./db','utf-8')
            var newNumber = number - 1
            fs.writeFileSync('./db',newNumber)
            response.setHeader('Conttent-Type','application/javascript')
            response.write(`
            alert('这是来自jmayun.com的代码')
            `)
            response.end()
  1. 最后开启两个server.js,成功接收到来自mayun.com的代码
    [图片上传失败...(image-ad72f6-1553065991823)]

14. 总结

前端一开始只能使用form表单向服务器发送请求,但后来发现用img标签的src也发送get请求,但用img发送请求还需要返回一张图片,因此又使用动态地创建script元素来发送请求,衍生出了JSONP。由于script标签的src是可以跨域的,因此jsonp发送的请求也是可以跨域发送,且对老式浏览器兼容。

相关文章

  • Jsonp学习笔记

    一、Jsonp简介 1.什么是Jsonp Jsonp(JSON with Padding)是json的一种“使用模...

  • JSONP学习笔记

    1. parseInt(n,10) 以10进制的方式把字符串n转换为整型 2. git 回到以前的状态 3. 随机...

  • 2019-02-20

    关于跨域总结 学习笔记 成长必要条件 -jsonp -cors 后端提供 res.setHeader('Acce...

  • 2018-11-19

    ### JsonP学习

  • jsonp原理学习笔记

    一、什么是jsonp 1)浏览器的同源策略:浏览器出于安全考虑具有跨域的安全限制,即限制从一个源加载的文档或脚本与...

  • CORS & JSONP 学习笔记一

    什么是跨域? 首先,现代浏览器为了安全,做了一个同源限制. 也就是所谓的同源安全策略. 本质上,其实是不存在所谓的...

  • JSONP、JQuery发送AJAX、JSONP请求

    1.JSONP 2.JQuery发送AJAX、JSONP请求 1.JSONP JSONP利用JavaScript...

  • JS-18day

    1、jsonp公开接口 2、jQuery-jsonp 3、jsonp

  • 2018-12-10

    节点操作 ajax jsonp jQuery-jsonp jsonp公开接口

  • jsonp原理

    模拟jsonp原理 servlet 测试 http://localhost/jq/jsonp.jsp JSONP ...

网友评论

      本文标题:JSONP学习笔记

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