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


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

查看所有标签

猜你喜欢:

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

Web应用漏洞侦测与防御

Web应用漏洞侦测与防御

Mike Shema / 齐宁、庞建民、张铮、单征 / 机械工业出版社 / 2014-8-20 / 69.00

本书由国际知名网络安全专家亲笔撰写,全面讲解如何预防常见的网络攻击,包括HTML注入及跨站脚本攻击、跨站请求伪造攻击、SQL注入攻击及数据存储操纵、攻破身份认证模式、利用设计缺陷、利用平台弱点、攻击浏览器和隐私等, 全书共8章:第1章介绍HTML5的新增特性及使用和滥用HTML5的安全考虑;第2章展示了如何只通过浏览器和最基本的HTML知识就可以利用Web中最常见的漏洞;第3章详细讲解CSR......一起来看看 《Web应用漏洞侦测与防御》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具