美文网首页
jsonp跨域

jsonp跨域

作者: 小旭同志 | 来源:发表于2017-12-13 09:16 被阅读0次

    作者:寸志

    链接:https://www.zhihu.com/question/28890257/answer/269738446

    来源:知乎

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    这是我面试的常问问题之一。顺序如下:

    1.知道 jsonp 么?基础知识

    :知道,可以实现跨域请求;

    答不知道:换别的话题。

    2.为什么 ajax 不可以,但是 jsonp 可以实现跨域请求呢?抠技术细节

    :因为 jsonp 是通过插入一个 script 标签,利用 script 可以跨域请求来实现的。换问题3;

    :面试官傻逼,ajax 现在也可以使用 cors 来做跨域请求;换问题 2.5。

    答不知道:换问题 2.5。

    2.5jsonp 实现原理?抠技术细节

    答:通过创建一个 script 标签,将 src 设置为目标请求,插入到 dom 中,服务器接受该请求并返回数据,数据通常被包裹在回调钩子中;

    回答不知道:我自己解释 jsonp 的实现。

    3.可以用 jsonp 发送 post 请求么?融汇贯通

    :显然不行,看过支持 post 请求的 script 么?

    答不知道:反问,看过支持 post 请求的 script 么?

    4.参考 jsonp,还有那些发送跨域请求的途径?学习能力和潜力

    :img link iframe 等元素都可以发送跨域请求呀!

    答不知道:反问img link iframe 等元素是不是也可以?

    5.img link iframe script 来发送跨域请求有什么优缺点?要不你面我吧

    ……

    其实吧,jsonp 名字听上去挺高大上,实际啊就是个矮穷矬。

    下附代码:


    jsonp

    类型: String

    在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。在jQuery 1.5,,设置jsonp选项为false,阻止了jQuery从加入"?callback"字符串的URL或试图使用"=?"转换。在这种情况下,你也应该明确设置jsonpCallback设置。例如, { jsonp: false, jsonpCallback: "callbackName" };

    jsonpCallback

    类型: String, Function

    为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成一个独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。从jQuery 1.5开始,你也可以使用一个函数作为该参数设置,在这种情况下,该函数的返回值就是jsonpCallback的结果。

    相关文章

      网友评论

          本文标题:jsonp跨域

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