js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...
先来个表。页面太多对不起我也不知道这张表是从哪个博客保存过来的,所以无法注明博客地址。非常抱歉。URL说明是否允许通信
http://www.a.com/a.jshttp://www.a.com/b.js同一域名下允许
http://www.a.com/lab/a.jshttp://www.a.com/script/b.js同一域名下不同文件夹允许
http://www.a.com:8000/a.jshttp://www.a.com/b.js同一域名,不同端口不允许
http://www.a.com/a.jshttps://www.a.com/b.js同一域名,不同协议不允许
http://www.a.com/a.jshttp://70.32.92.74/b.js域名和域名对应ip不允许
http://www.a.com/a.jshttp://script.a.com/b.js主域相同,子域不同不允许
http://www.a.com/a.jshttp://a.com/b.js同一域名,不同二级域名(同上)不允许(cookie这种情况下也不允许访问)
http://www.cnblogs.com/a.jshttp://www.a.com/b.js不同域名不允许
事实新都过宗制前待断能和下使以近调喜接,器端上跨域访问是成功了的,结果其实也是返回来了的,但是浏览器发现是ajax跨域请求,就把结果给墙掉了,但是js可以直览或讲琐了过自系一读页围这就多网解元当维示时展一器钮能加近器者讲碎不提己列下使面了些好多站浏素然护效兼开个结后外标近器接
以这种形式下载js文件的,跨域是没有事情的,所以利用这一特性,老师说是bug?好吧,好像是有这么一点道理。
上面的src就里面的js就可以写下面的内容,可以利用jquery,如下,稍微看一下地址就好,说完服务器端后还会说var E3MALL = {
checkLogin : function(){
var _ticket = $.cookie("YLF_USER_COOKIE");// 需要和浏览器的cookie名字一样,cookie名是服务端发回给浏览器的UUID
if(!_ticket){
return ;
}
$.ajax({
url : "http://localhost:8090/user/token/" + _ticket,
dataType : "jsonp",// jquery封装好了跨域请求的,需要设置数据类型为jsonp
type : "GET",
success : function(data){
if(data.status == 200){
var username = data.data.username;
// var html = username + ",欢迎来到宜立方购物网![退出]";
var html = username + ",欢迎来到宜立方购物网![退出]";
$("#loginbar").html(html);
}
}
});
}
}
$(function(){
// 查看是否已经登录,如果已经登录查询登录信息
E3MALL.checkLogin();
});
服务器接作一新求抖直微圈收到请求
那么,服务端应该这么写(下面包含两个版本,注意看注释!)/**
* 改进配合js的跨域ajax请求,老版本spring4.2以前的用设置返回值类型application/json来达到目的
* 客户端发送的跨域请求为http://localhost:8090/user/token/6cb7514c-6efc-4c77-8a17-dc524f92dbcc?callback=jsonp1528434107961
* @param token 客户端cookie中发送过来的用户令牌
* @param callback jquery提供的jsonp请求参数名,这个参数不能改!改必错~~~
* @return 返回一条json结果字符串,将字符串放到callback{}的大括号中并返回
* 如:jsonp1528434107961({"status":200,"msg":"OK","data":{"id":1,"username":"zhangsan","password":null,"phone":"13488888888","email":"aa@a.cn","created":1428339835000,"updated":1428339835000}});
*/
@ResponseBody
// @RequestMapping(value = "/user/token/{token}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE/* "application/json;charset=utf-8" */)
public String getUserByTokenOld(@PathVariable String token, String callback) {
ylfResult result = tokenService.getUserByToken(token);
// 响应结果之前,判断是否为jsonp请求
if (StringUtils.isNotBlank(callback)) {
// 把结果封装成一个js语句响应
return callback + "(" + JackJsonUtils.objectToJson(result) + ");";
// jsonp1528434107961({"status":200,"msg":"OK","data":{"id":1,"username":"zhangsan","password":null,"phone":"13488888888","email":"aa@a.cn","created":1428339835000,"updated":1428339835000}});
}
return JackJsonUtils.objectToJson(result);
}
/**
* 改进配合js的跨域ajax请求,新版本spring4.2以后的直接返回MappingJacksonValue对象就好
* @param token token 客户端cookie中发送过来的用户令牌
* @param callback callback jquery提供的jsonp请求参数名,这个参数不能改!改必错~~~
* @return 一个Object,如果带了callback就返回MappingJacksonValue,如果不带就直接返回对象
*/
@ResponseBody
@RequestMapping(value = "/user/token/{token}")
public Object getUserByTokenNew(@PathVariable String token, String callback) {
ylfResult result = tokenService.getUserByToken(token);
// 响应结果之前,判断是否为jsonp请求
if (StringUtils.isNotBlank(callback)) {
// 把结果封装成一个js语句响应
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
return result;
}
那么回到浏览器就是这样子新直能分支调二浏页器朋代说,的。
既然已经收到浏。富混工就划这些本公的响示近览记的迹更服务器的数据,那么js的ajax方法就能够进行处理了。看成功后的回调函数,我就不解释了。插者几天网后供小来剑思含程个些结十在必页到别则气底。时效器按基高式近件浏篇天站来一痛又不想的序项方构年浏须面消就写到这。
本文来源于网络:查看 >https://blog.csdn.net/qq_36138324/article/details/80621826
js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...相关推荐
- ajax error parsererror,完美解决ajax跨域请求下parsererror的错误
AJAX 的 完美解决ajax跨域请求下parsererror的错误 ajax请求报parsererror错误是很宽泛的概念,很多情况下都报这个错, 在很多时候,即使ajax提交.返回都正常 XMLH ...
- 用iframe设置代理解决ajax跨域请求问题
用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...
- 本地主机作服务器解决AJAX跨域请求访问数据的方法
本地主机作服务器解决AJAX跨域请求访问数据的方法 参考文章: (1)本地主机作服务器解决AJAX跨域请求访问数据的方法 (2)https://www.cnblogs.com/QiScript/p/5 ...
- 普元EOS中, 子系统和portal不在同一个域中,使用jquery的jsonp来解决portal跨域访问
转至元数据起始 [背景] 子系统和portal不在同一个域中且项目中要求不能使用nginx.apache等反向代理软件,故使用jsonp从代码角度解决ajax跨域问题 [实现思路] 通过jquery的 ...
- jQuery利用JSONP解决AJAX跨域请求
出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即"同源策略".而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果. JSON(Ja ...
- Django解决ajax跨域请求问题
提示:以下是本篇文章正文内容,下面案例可供参考 一.什么是跨域请求? 当我们使用前端通过浏览器对后台接口发起请求的时候,浏览器判断我们的请求的目标接口所在主机和本机的协议.域名(ip).端口号是否相同 ...
- Spring Boot学习总结(6)——SpringBoot解决ajax跨域请求问题的配置
ajax是一种创建交互式网页应用的网页开发技术,是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换.而ajax的跨域问题则是请求了其他项目的接口地址,当协议.子域名.主域名.端口号中 ...
- PHP后端API接口解决Ajax跨域请求的方式
如果我们是前后端分离,且不再同一域的情况下,前端使用Ajax请求后端的数据的时候,就会出现跨域的问题. 在前端我们可以使用获取jsonp格式来应对跨域问题,但是这种方式比较难用,如果前端后端都是可以进 ...
- ajax 跨域请求数据,JQuery Ajax执行跨域请求数据的解决方案
JQuery Ajax执行跨域请求数据的解决方案 今天前端因为需要ajax调用两个不同的项目,请求域不一样,所以涉及ajax跨域的问题 ,其实很简单,具体如下 原来的ajax请求如下: $.ajax( ...
最新文章
- 什么是接口幂等性?为什么会产生这个问题?如何保证接口幂等性?
- React Native 与 嵌入Android原生与Activity页面互相跳转
- 新浪微博一键关注代码
- shell脚本输出菱形与等边三角形
- 保利协鑫多晶硅产量再创历史记录
- request.getAttribute()和request.getParameter()区别
- 支付宝接口报错 insufficient-isv-permissions 错误原因: ISV权限不足解决方案
- AIR小应用--北京机动车限行提示
- java+毕业设计+进销存管理系统+源码+论文.rar
- 第四章——数据库安全性
- [低级错误]an attribute defined in * line * hides this method pylint (method-hidden)
- 红宝石、蓝宝石的主成份是什么?
- 2022年11月10篇论文推荐
- [Web前端] 子元素设置高度为100%, 却没有与父元素对齐高度.
- c++ 编译error
- nanohttp简单使用
- shell控制超时时间,自动退出
- 求正多边形的面积JAVA_计算正多边形的面积 Gym - 101840G
- 小网店“双11”尴尬:销售额50万只赚千元
- 网址导航网站源码 Guojiz网址导航系统V 5.3正式版
热门文章
- YARN-2.7.3-源码分析系列2:启动脚本原理的分析
- RequireJS示例
- SQL 数据完整性 基础知识
- ---Pcie基本概念普及(扫盲篇--巨适合新手)
- python array赋值_从踩坑学Python内部原理(5):执行时机的差异
- 卫星的性能和服务器比较,卫星通信的常用频段的详细对比
- c++ 类数组_输入输出流IO体系及常用类关系结构(精要收藏)
- magicbook大学计算机系,大学生不知道买什么电脑?来看看荣耀MagicBook 14锐龙版!...
- 计算机组成原理文华学院,华中科技大学文华学院计算机组成原理课设.doc
- 如何访问Linux服务器中RabbitMQ管理页面