摘要:好啦,再次大功告成。由萬(wàn)維網(wǎng)協(xié)會(huì)研制,它為用戶提供了對(duì)自己公開信息的更多的控制。支持的站點(diǎn)可以為瀏覽者聲明他們的隱私策略。果然在瀏覽器中打開設(shè)置隱私阻止永不,打開上述設(shè)置之后,跨域種瞬間成功。
前段時(shí)間開發(fā)了一個(gè)用戶登錄的模塊,需求很簡(jiǎn)單,用戶輸入手機(jī)號(hào)和驗(yàn)證碼,我們就會(huì)返回給用戶一套身份信息并保存在cookie里面。so easy,于是就有以下代碼:
// 大致意思如下,并非真實(shí)模塊中的代碼 document.cookie = "token=xxxxxxxx;domain=xxx.com;path=/;expires=xxxx";
大功告成!但是,問題也來(lái)了,這樣做并不安全,用戶的信息可以輕易的通過JS獲取,XSS,CSRF變的輕而易舉。于是,我們將種cookie的操作交給了服務(wù)端,并給其中一個(gè)cookie加上了httponly屬性,這個(gè)屬性僅僅保證我們的cookie不能通過document.cookie來(lái)獲取,減小了用戶cookie被竊取的概率。
Set-Cookie:token1=xxxxx; expires=GMT Date; Max-Age=xxx; path=/; domain=xxx.com Set-Cookie:token2=xxxxx; expires=GMT Date; Max-Age=xxx; path=/; domain=xxx.com; httponly
好啦,再次大功告成。但是,過了一段時(shí)間,我們的網(wǎng)站多啦,同時(shí)存在了幾個(gè)域名,我們需要在用戶登錄的時(shí),同時(shí)給多個(gè)域種cookie。OK,很簡(jiǎn)單,我們只需要調(diào)用多個(gè)域名下的種cookie的接口,不就行啦?
事情沒有這么簡(jiǎn)單,經(jīng)過測(cè)試之后發(fā)現(xiàn)我們的cookie在某些特定的瀏覽器下有可能跨域種cookie失敗。為什么呢?經(jīng)過一番google之后,發(fā)現(xiàn)其實(shí)是一些瀏覽器對(duì)于跨域種cookie做了一些限制,我們需要用一些方法來(lái)解決限制。
P3P由萬(wàn)維網(wǎng)協(xié)會(huì)研制,它為Web用戶提供了對(duì)自己公開信息的更多的控制。支持P3P的Web站點(diǎn)可以為瀏覽者聲明他們的隱私策略。
其實(shí)上面都是廢話,大概意思就是說你要在你的http header里面加入一個(gè)P3P協(xié)議的說明,詳細(xì)信息可以看這個(gè)歪果仁寫的文章"P3P, Cookies and IE6.0: A Case Study"
P3P:CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
很開心,再次大功告成。BUT,現(xiàn)實(shí)總是這么殘酷,safari上仍然不能跨域種cookie。這又是為什么呢?根據(jù)蘋果爸爸的尿性來(lái)推測(cè),肯定又是他做了什么安全性的限制。果然!在safari瀏覽器中打開設(shè)置 > 隱私 > 阻止cookie > 永不,打開上述設(shè)置之后,跨域種cookie瞬間成功。但是,我們總不能要求用戶一個(gè)個(gè)去打開這個(gè)設(shè)置吧?所以還要另尋解決辦法。
后來(lái)我們發(fā)現(xiàn)其實(shí)對(duì)于safari來(lái)說所謂的第三方需要滿足兩個(gè)條件:
用戶從來(lái)沒有主動(dòng)訪問該域名
該域名并沒有作為第一方種過cookie
基于以上兩點(diǎn)我們做了2個(gè)操作:
通過http 302的方式來(lái)跨域種cookie
在用戶訪問我們的域名之后,默認(rèn)在訪問域名下種下一個(gè)記錄性的cookie,減小我們的域名種Cookie失敗的概率
好啦,這次真的大功告成啦,寫一篇流水賬記錄一下這個(gè)坑。
博客地址:ssh.today,歡迎關(guān)注
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82078.html
摘要:今天遇到了一個(gè)錯(cuò)誤,翻譯一下就是堆棧溢出,很好奇就是一個(gè)簡(jiǎn)單請(qǐng)求怎么會(huì)報(bào)這個(gè)錯(cuò)誤,研究了一下,發(fā)現(xiàn)犯了一個(gè)很低級(jí)的錯(cuò)誤,的參數(shù)錯(cuò)誤了是未定義的變量,值為空,然后導(dǎo)致了這個(gè)問題,但是為什么,暫時(shí)還沒有搞明白,如果哪位對(duì)源代碼比較熟悉,知道是怎 今天遇到了一個(gè)錯(cuò)誤, showImg(https://segmentfault.com/img/bVHYYa?w=1424&h=233);翻譯一下...
摘要:前者集成在中,后者主要是為微信用戶提供了另一種支付方式需要在微信的內(nèi)置瀏覽器中打開頁(yè)面,再調(diào)起微信支付。步驟商戶后臺(tái)收到用戶支付單,調(diào)用微信支付統(tǒng)一下單接口。拿到所有參數(shù)后,就可以在頁(yè)面中發(fā)起微信支付的請(qǐng)求了。 微信支付,支持的支付方式比較多:有掃碼支付,刷卡支付,APP支付和公眾號(hào)支付。其中,APP和網(wǎng)站上最常用的就是APP支付和公眾號(hào)支付。前者集成在APP中,后者主要是為微信用戶提...
摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。端將拼接好的字符串拿去請(qǐng)求支付寶客戶端即可調(diào)起支付寶進(jìn)行支付。向支付寶申請(qǐng)新訂單,獲取支付。成功請(qǐng)求回來(lái)后,就可以向支付寶發(fā)出一次支付請(qǐng)求。 支付寶在所有支付方式中最好開發(fā)的了,因?yàn)槲臋n比較清晰,而且開發(fā)起來(lái)也比較簡(jiǎn)單。因此,支付寶的坑是相對(duì)較少的。原文地址 APP支付 APP支付步驟為: 獲取支付寶的...
摘要:坑請(qǐng)求跨域問題使用時(shí),其中的已經(jīng)默默幫你做了很多事,都幫你配置好了所以你發(fā)現(xiàn)你找不到相關(guān)的配置文件。放到服務(wù)器上仍然是空白的無(wú)法訪問。原來(lái)是因?yàn)槁窂絾栴},簡(jiǎn)單配置一下即可。上文提到過已經(jīng)幫我們做好了很多事,方便在此,麻煩也在此。 react坑: 1、fetch請(qǐng)求cookie跨域問題使用creat-react-app時(shí),其中的react-script已經(jīng)默默幫你做了很多事,都幫你配置好...
閱讀 2199·2021-11-24 10:26
閱讀 2809·2021-11-23 09:51
閱讀 2919·2021-10-08 10:05
閱讀 1706·2021-09-22 15:18
閱讀 1638·2019-08-29 18:45
閱讀 2154·2019-08-29 18:40
閱讀 3344·2019-08-29 16:16
閱讀 2859·2019-08-29 14:21