ajax跨域问题(二)

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

内容简介: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的问题。而解决请求是跨域的思路就是之前总结的两种:一种是要服务器支持跨域,一种是在前台调用的时候隐藏跨域。


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

查看所有标签

猜你喜欢:

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

金融计算与建模

金融计算与建模

朱世武 / 清华大学 / 2007-8 / 40.00元

《金融计算与建模:理论、算法与SAS程序》全书分为4大模块:1-9章为金融学基础指标计算模块;10-12章为股票定价模块;13-18章为风险度量模块;19-23章为固定收益定价模块。每一模块的内容一般由三部分组成:金融理论与模型、算法实现及计算程序。其中,算法实现与计算程序全部以中国金融市场的实际问题为应用背景而设计。《金融计算与建模:理论、算法与SAS程序》不仅展现了应用SAS软件的技术,同时也......一起来看看 《金融计算与建模》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具