日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oauth2.0里回调地址返回code中如何让code不显示在URL里?

發(fā)布時(shí)間:2024/4/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oauth2.0里回调地址返回code中如何让code不显示在URL里? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景:

? ?最近在調(diào)用對(duì)方提供的oauth2.0接口的時(shí)候,返回code在URL顯示,但是會(huì)影響到本系統(tǒng)調(diào)用其他的菜單項(xiàng)的操作,所以想把返回的code值去掉。

解決辦法:

?? ?想了各種解決辦法,目前把自己解決辦法的經(jīng)過(guò)介紹給大家,有些辦法存在弊端,但是最終我還是使用了一個(gè)影響幾乎不大的辦法,供大家學(xué)習(xí)參考!

方法一:

本人首先想到的是在源頭把code去掉,就是在后端獲取到code,accessToken,refreshToke等參數(shù)之后,把返回的URL地址修改掉,可是發(fā)現(xiàn)這個(gè)辦法有點(diǎn)難,因?yàn)閛auth 2.0的機(jī)制就是如此。

也許會(huì)有其他在后端解決的方法,我只是沒(méi)有深入的去研究了。于是,我就想在前端去解決,把返回的URL地址修改一下,代碼如下:

?

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

這個(gè)辦法雖然可以解決,但是跳轉(zhuǎn)到該頁(yè)面的時(shí)候,頁(yè)面先加載一下,然后就刷新了一下,這樣會(huì)導(dǎo)致頁(yè)面效果不好,體驗(yàn)也非常的不好,而且還導(dǎo)致后臺(tái)報(bào)一個(gè)錯(cuò)誤,大概意思是:org.apache.catalina.connector.ClientAbortException: java.io.IOException: 遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接。。。。。。。

應(yīng)該就是說(shuō)一個(gè)頁(yè)面還沒(méi)加載完,又重新加載一個(gè)頁(yè)面。導(dǎo)致必須關(guān)閉一個(gè)連接。因?yàn)槲野焉厦娲a屏蔽掉后,就不報(bào)這個(gè)錯(cuò)誤了。所以我就打算放棄這個(gè)方法,找其他解決辦法。

?

方法二:

? ?思來(lái)想去,突然一個(gè)念頭閃現(xiàn),會(huì)不會(huì)存在一個(gè)方法,修改URL地址,但是不刷新頁(yè)面呢?于是便在網(wǎng)上搜索了一下,還真的存在。

利用history.pushState實(shí)現(xiàn)

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

補(bǔ)充一下pushState與replaceState的知識(shí):

兩者都是html5的新特性,支持IE10以上,都有三個(gè)參數(shù):

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

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

(2)title:現(xiàn)在大多數(shù)瀏覽器不支持或者忽略這個(gè)參數(shù),最好用null代替。

(3)url:任意有效的URL,用于更新瀏覽器的地址欄,并不在乎URL是否已經(jīng)存在地址列表中。更重要的是,它不會(huì)重新加載頁(yè)面。

history.replaceState(state,title,url)

用新的state和URL替換當(dāng)前。不會(huì)造成頁(yè)面刷新。

state:與要跳轉(zhuǎn)到的URL對(duì)應(yīng)的狀態(tài)信息。

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

url:要跳轉(zhuǎn)到的URL地址,不能跨域。

兩者的區(qū)別:

pushState()是在history棧中新建一個(gè)歷史記錄,而replaceState()是替換當(dāng)前記錄;

?

以上是我解決這個(gè)問(wèn)題的經(jīng)過(guò),希望有此問(wèn)題困惑的人,能看到這篇文章,供您參考!

如果這篇文章對(duì)您有所幫助,請(qǐng)隨便打賞一下作為鼓勵(lì),我會(huì)再接再厲的!!!

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhangliang88/p/10978702.html

總結(jié)

以上是生活随笔為你收集整理的oauth2.0里回调地址返回code中如何让code不显示在URL里?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。