美文网首页
ajax跨域问题

ajax跨域问题

作者: 巧克力_404 | 来源:发表于2018-08-10 16:26 被阅读0次

    什么是ajax跨域问题,简单来说,就是在前台调用后台服务接口的时候,如果这个接口不是同一个域的,就会产生跨域问题

    1、发生跨域问题是浏览器限制的问题

    2、发出去的请求本身就是跨域

    3、发出去的请求是XHR请求

    普通的ajax请求发出的请求的type的xhr 返回的数据是一个json对象,那么什么是jsonp,它是一个官方协议,它是一个约定,它约定了我请求的参数里面如果包含了指定的参数,默认就是callback,这就是一个jsonp请求,服务器发现是jsonp请求的时候就会把返回的值由原来的json对象,转换成script代码,js代码是函数调用的形式,它的函数名称是callback参数的值,函数的参数是原来要返回的json对象,这就是jsonp协议工作的内容。

     jsonp发出去的类型的script 返回的数据是一个js脚本,jsonp不是官方协议,但是它也是一个协议,约定返回的数据是js代码,js代码的内容就是callback的值做为函数名,返回的数据做为函数的参数.

    jsonp是通过动态创建script,在script中把这个请求发出去了,在调用没压缩的jq中9800行左右的地方打断点我们就可以看到,jq动态创建一个js文件插入head  cache:true 表示我们的结果可以被缓存

    jsonp的弊端:需要服务器改动,只支持GET方法,发送的不是xhr请求

    跨域的解决方向: 被调用方解决  / 调用方解决

    第一种被调用方解决,这是一种基于支持跨域的一种解决思路,是基于http协议关于跨域方面的一些规定,在响应头里增加相应的字段,告诉浏览器我允许它调用,在这种解决文案面前,跨域请求是直接从浏览器发送出去的

    第二种是调用方解决,这是一种隐藏跨域的解决思路,跨域请求不会从浏览器直接发到被调用方,而是从中间的http服务器转发过去的,假设调用方是a.com 被调用方是b.com,在浏览器上全是a.com的请求。

    相关文章

      网友评论

          本文标题:ajax跨域问题

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