背景:

最近在调用对方提供的oauth2.0接口的时候,返回code在URL显示,但是会影响到本系统调用其他的菜单项的操作,所以想把返回的code值去掉。

解决办法:

    想了各种解决办法,目前把自己解决办法的经过介绍给大家,有些办法存在弊端,但是最终我还是使用了一个影响几乎不大的办法,供大家学习参考!

方法一:

本人首先想到的是在源头把code去掉,就是在后端获取到code,accessToken,refreshToke等参数之后,把返回的URL地址修改掉,可是发现这个办法有点难,因为oauth 2.0的机制就是如此。

也许会有其他在后端解决的方法,我只是没有深入的去研究了。于是,我就想在前端去解决,把返回的URL地址修改一下,代码如下:

<script type="text/javascript">
$(document).ready(function() {
var currenturl = window.location.href;
if (location.href.indexOf("?code=")!=-) {
var newUrl = location.href.split("?")[];
window.location.replace(newUrl);
}
});
</script>

这个办法虽然可以解决,但是跳转到该页面的时候,页面先加载一下,然后就刷新了一下,这样会导致页面效果不好,体验也非常的不好,而且还导致后台报一个错误,大概意思是:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。。。。。。。

应该就是说一个页面还没加载完,又重新加载一个页面。导致必须关闭一个连接。因为我把上面代码屏蔽掉后,就不报这个错误了。所以我就打算放弃这个方法,找其他解决办法。

方法二:

思来想去,突然一个念头闪现,会不会存在一个方法,修改URL地址,但是不刷新页面呢?于是便在网上搜索了一下,还真的存在。

利用history.pushState实现

<script type="text/javascript">
$(document).ready(function() {
var currenturl = window.location.href;
//alert("url="+url);
if (location.href.indexOf("?code=")!=-) {
var newUrl = location.href.split("?")[];
history.pushState('','',newUrl);//参数可省略
}
});
</script>

补充一下pushState与replaceState的知识:

两者都是html5的新特性,支持IE10以上,都有三个参数:

以history.pushState(state,title,url)为例:

(1)state:存储JSON字符串,可以用在popstate事件中。

(2)title:现在大多数浏览器不支持或者忽略这个参数,最好用null代替。

(3)url:任意有效的URL,用于更新浏览器的地址栏,并不在乎URL是否已经存在地址列表中。更重要的是,它不会重新加载页面。

history.replaceState(state,title,url)

用新的state和URL替换当前。不会造成页面刷新。

state:与要跳转到的URL对应的状态信息。

title:不知道干啥用,传空字符串就行了。

url:要跳转到的URL地址,不能跨域。

两者的区别:

pushState()是在history栈中新建一个历史记录,而replaceState()是替换当前记录;

以上是我解决这个问题的经过,希望有此问题困惑的人,能看到这篇文章,供您参考!

如果这篇文章对您有所帮助,请随便打赏一下作为鼓励,我会再接再厉的!!!

oauth2.0里回调地址返回code中如何让code不显示在URL里?的更多相关文章

  1. 查找常用字符(给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。)

    给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表. 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 ...

  2. js遍历ajax回调函数返回值中的object对象

    function printObject(obj) {      //obj = {"cid":"C0","ctext":"区县& ...

  3. Force.com微信开发系列(七)OAuth2.0网页授权

    OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OA ...

  4. 微信公众平台开发—利用OAuth2.0获取微信用户基本信息

    在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...

  5. 腾讯微博OAuth2.0认证介绍

    腾讯微博开放平台,是基于腾讯微博系统,为广大开发者和用户提供的开放数据分享与传播平台. 广大开发者和用户登录平台后,就可以使用平台提供的开放API接口,创建应用从微博系统获取信息,或将新的信息传播到整 ...

  6. OAuth2.0认证介绍

    OAuth2.0鉴权 返回 目录 [隐藏] 1 腾讯微博OAuth2.0认证介绍 2 获取accesstoken的两种方式 2.1 1.Authorization code grant 2.1.1 第 ...

  7. OAuth2.0认证过程

    本文以腾讯微博为例,详细介绍OAuth2.0的认证过程. 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken ...

  8. 使用微服务架构思想,设计部署OAuth2.0授权认证框架

    1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...

  9. API代理网关和OAuth2.0授权认证框架

    API代理网关和OAuth2.0授权认证框架 https://www.cnblogs.com/bluedoctor/p/8967951.html 1,授权认证与微服务架构 1.1,由不同团队合作引发的 ...

随机推荐

  1. java使用Thumbnailator处理图片

    Thumbnailator是一款不可多得的处理图片的第三方工具包,它写法简单到让人无法相信,Java本身也有处理图片压缩的方法,但是代码冗长到让人痛不欲生,在篇末会给出Java本身的实现方式,做下对比 ...

  2. BA-BACnet对象

    BACNET协议有多少个对象呢,拿出西门子教程中的看看一下,居然有48个,其中的大部分都没有用到:

  3. JavaScript中==和===区别

    在我们的日常编码中对于===是不常用的,但是它很重要 ===:表示绝对相等(严格) !==:表示不绝对相等 ==:表示相等(不严格) !=:表示不相等 看一下列子: null==undefined   ...

  4. HDU 4354

    思路是在看电视时突然想到的.枚举区间,然后按树形DP来选择最大值看是否满足条件.但枚举区间时的方法低效,看了题解,说枚举区间可以设两个指针逐步移动, 开始 l = r = 1, 记录已经出现的国家. ...

  5. Android 经常使用设计模式(一)

    由于项目变更的频繁性,作为一名程序猿,我们须要掌握设计模式的必要性.就不言而喻~~.以下就是一些我自己学习的设计模式总结. 接下来,主要是针对几个比較经常使用模式进行解说,主要是以下几种: 观察者模式 ...

  6. hibernate 管理 Session(单独使用session,非spring)

    Hibernate 自身提供了三种管理 Session 对象的方法 Session 对象的生命周期与本地线程绑定 Session 对象的生命周期与 JTA 事务绑定 Hibernate 托付程序管理 ...

  7. Linux程序设计学习笔记——异步信号处理机制

    转载请注明出处: http://blog.csdn.net/suool/article/details/38453333 Linux常见信号与处理 基本概念 Linux的信号是一种进程间异步的通信机制 ...

  8. HDU 1160 FatMouse&#39;s Speed DP题解

    本题就先排序老鼠的重量,然后查找老鼠的速度的最长递增子序列,只是由于须要按原来的标号输出,故此须要使用struct把三个信息打包起来. 查找最长递增子序列使用动态规划法.主要的一维动态规划法了. 记录 ...

  9. 38.Qt模型/视图结构

    1.模型/视图类 2.模型 3.视图 4.代理 1 模型/视图类 InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardModel类,QDirModel类,QStringL ...

  10. AARRR:互联网创业者一定要掌握的指标

    创业公司如何做数据分析?网站分析工具里的指标千百种,到底要从哪些数据入手呢?除了流量跟转换率,还有哪些数据跟公司成长有关呢?或许可以从了解AARRR Metrics开始.AARRR Metrics是由 ...