ajax跨域问题(二)

栏目: Json · 发布时间: 6年前

内容简介:jsonp是一个非官方协议,它是一个约定。它约定了我请求的参数里面如果包含指定的参数(默认是callback)的话这就是一个jsonp请求。工作机制:在发送请求的时候加了一个callback的参数,后台发现有callback参数就知道这是一个jsonp请求,然后他就会把返回的对象有json变为javascript,而javascript的内容就是一个函数调用。内容里,callback的值做为函数名,返回的数据作为函数的参数。普通ajax请求发出去type是xhr的,而jsonp请求发出去的type是scri

jsonp是一个非官方协议,它是一个约定。它约定了我请求的参数里面如果包含指定的参数(默认是callback)的话这就是一个jsonp请求。

工作机制:在发送请求的时候加了一个callback的参数,后台发现有callback参数就知道这是一个jsonp请求,然后他就会把返回的对象有json变为javascript,而javascript的内容就是一个函数调用。内容里,callback的值做为函数名,返回的数据作为函数的参数。

普通ajax请求和jsonp请求的区别:

type不一样

普通ajax请求发出去type是xhr的,而jsonp请求发出去的type是script,因为不是xhr类型,所以浏览器就不会做校验。

返回的类型不一样。

普通的ajax请求返回的类型是json对象,而jsonp里面返回的类型是js脚本。

url不同

jsonp的url里面会有一个callback的参数。callback参数就是前后台之间的一个约定(参数名不是必须是callback,只要前后台保持一致就行)。

jsonp的弊端:

服务器需要改动代码来支持

jsonp实现跨域后台服务器是需要做改动的,前后台的参数要保持一致。但是如果你要调用的接口不是自己公司的代码,那jsonp就无能无力了。

只支持get方法

他的原理是通过动态的创建script的方法来实现跨域。script只支持get方法

发送的不是XHR请求

XHR请求有很多新的特性,比如异步,各种事件,而这些jsonp都不支持。

总结:

我们解决跨域问题的最好方法还是要从解决请求是跨域的这个角度去解决,而不是解决请求是xhr的问题。而解决请求是跨域的思路就是之前总结的两种:一种是要服务器支持跨域,一种是在前台调用的时候隐藏跨域。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java和Android开发学习指南(第二版)

Java和Android开发学习指南(第二版)

Budi Kurniawan / 李强 / 人民邮电出版社 / 2016-3 / 69.00元

本书是Java语言学习指南,特别针对使用Java进行Android应用程序开发展开了详细介绍。 全书共50章,分为两大部分。第1部分(第1章到第22章)主要介绍Java语言基础知识及其功能特性。第2部分(第23章到第50章)主要介绍如何有效地构建Android应用程序。 本书适合任何想要学习Java语言的读者阅读,特别适合想要成为Android应用程序开发人员的读者学习参考。一起来看看 《Java和Android开发学习指南(第二版)》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具