Ajax实现跨域请求
1、Get方式请求--使用jsonp
什么是jsonp格式呢?如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。
客户端JS:
var xhrurl = 'http://localhost:8001/Ajax/ticketNotify.ashx?cu=kefu1'; $.ajax({ type : "get", async : false, url :xhrurl, cache : false, dataType : "jsonp", jsonp: "callbackparam", jsonpCallback:"jsonpCallback1", success : function(json){ alert(json[0].name); }, error:function(e){ alert("error"); } });
服务端代码:
String callbackFunName = context.Request["callbackparam"]; context.Response.Write(callbackFunName + "([ { \"name\":\"John\"}])");
注意:客户端的jsonp参数是用来通过url传参,传递jsonpCallback参数的参数名,比较拗口,通俗点讲:
jsonp: "callbackparam" jsonpCallback:"jsonpCallback1" 这两个参数最终会拼接在请求的url后面,变成 http://www.xxx.com/ajax/xxx.ashx?callbackparam=jsonCallback1 服务端要获取这个参数值:"jsonCallback1" ,拼接在要输出的JSON数据最前面。
2、Post方式请求--使用CORS
CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。
CORS浏览器支持情况如下图:
假设我们页面或者应用已在 http://www.test1.com 上了,而我们打算从 http://www.test2.com 请求提取数据。一般情况下,如果我们直接使用 AJAX 来请求将会失败,浏览器也会返回“源不匹配”的错误,“跨域”也就以此由来。
利用 CORS,http://www.test2.com 只需添加一个标头,就可以允许来自 http://www.test1.com 的请求,设置,“*”号表示允许任何域向我们的服务端提交请求:
也可以设置指定的域名,如域名 http://www.test2.com ,那么就允许来自这个域名的请求:
当前我设置的header为“*”,任意一个请求过来之后服务端我们都可以进行处理&响应,那么在调试工具中可以看到其头信息设置,其中见红框中有一项信息是“Access-Control-Allow-Origin: *"表示我们已经启用CORS,如下图。
Ajax实现跨域请求相关推荐
- jfinal里使用ajax,Jfinal解决AJAX的跨域请求
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful. 一开始使用AJAX来传输json数据时, ...
- 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)
利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...
- ajax+php跨域请求数据库,基于jQuery的ajax跨域请求,PHP作为服务器端代码
ajax实现跨域请求有两种方式: 方法一:jsonp的方式 jsonp方式的关键点在客户请求以jsonp作为数据类型,服务器端接收jsonp的回调函数,并通过回调函数进行数据的传输.具体代码如下: 客 ...
- ajax 跨域请求数据,JQuery Ajax执行跨域请求数据的解决方案
JQuery Ajax执行跨域请求数据的解决方案 今天前端因为需要ajax调用两个不同的项目,请求域不一样,所以涉及ajax跨域的问题 ,其实很简单,具体如下 原来的ajax请求如下: $.ajax( ...
- jq中ajax请求跨域,jquery+ajax实现跨域请求的方法
本文实例讲述了jquery+ajax实现跨域请求的方法.分享给大家供大家参考.具体实现方法如下: 说明:这里的dataType 为 "jsonp" :type 只能为 GET ...
- ajax是如何实现跨域的,在JS中如何实现ajax与ajax的跨域请求
下面小编就为大家分享一篇原生JS实现ajax与ajax的跨域请求实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 一.原生JS实现ajax 第一步获得XMLHttpRequest对 ...
- Java Ajax jsonp 跨域请求
2019独角兽企业重金招聘Python工程师标准>>> 1. 什么是JSONP 一般来说位于 server1.example.com 的网页无法与不是 server1.example ...
- Ajax(跨域请求)
JSONP 跨域请求 CORS 跨域请求 proxy代理请求 1.什么是跨域 首先,现代浏览器为了安全,做了一个同源限制. 也就是所谓的同源安全策略. 本质上,其实是不存在所谓的跨不跨域的. 把浏览器 ...
- [油猴脚本开发指南]脚本ajax的跨域请求
转载自油猴中文网:bbs.tampermonkey.net.cn 李恒道QQ4548212 油猴中文网bbs.tampermonkey.net.cn TamperMonkey GreaseMonkey ...
最新文章
- 黄金矿工-收益最大化
- selenium借助AutoIt识别上传(下载)详解
- .NET CF WM上创建快捷方式
- mysql 2006测试_狂神说MySQL06:事务和索引
- 什么是软件测试架构师?
- Fabric--使用多通道
- C语言中单目运算符的结合方向是,C语言运算符的结合性
- 2020-08-29
- Linux动态频率调节系统CPUFreq
- HTTPS和TCP的关系
- python渲染html 库_在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
- elk收集分析nginx access日志
- MATLAB rolcus函数,利用Matlab绘制系统的根轨迹.doc
- 弥合银行业的数字鸿沟
- Buck_Boost电路分析 亲测
- 【数据库CS751】数据库的建表与插入
- 亦舒的话,我的感触...
- 工业机器人码垛教学实施_《工业机器人码垛工作站安装与调试》教学设计文本.doc...
- 求职 | Python、数据分析、Java
- IPv6网络的可操作安全考虑——RFC9099解析(一)