使用iframe進行單點登錄傳遞cookie


由於公司需求,要求把地址直接放到iframe的src屬性,進行直接跳轉到內部頁面,直接免登錄操作;於是出現了cookie丟失的問題,導致登陸失敗;

從谷歌瀏覽器會發現以下提示

 

 ,意思就是瀏覽器現在加上了SameSite的特性,谷歌瀏覽器的默認屬性是SameSite=Lax,那就是禁止傳遞cookie的意思。想要傳遞這個cookie就要設置這個SameSite屬性為None且帶上Secure=True的設置;

既然知道了怎么回事,那就設置這個屬性就行了吧。

根據實際情況,公司的后台服務是部署在IIS上面,直接說解決方法吧,1在傳遞cookie的asp.net頁面添加請求頭

,這樣還不行,還要再iis上面進行URL重寫,需要在服務器安裝一個程序,叫:urlrewrite2.exe,百度一下就可以下載。

 

安裝完后打開iis的網站,雙擊url重寫,添加出站規則,填寫如下信息

 

 ,然后配置文件會自動生成重寫的內容

  <system.webServer>
 <rewrite>
            <outboundRules>
                <remove name="AddSameSiteCookieFlag" />
                <remove name="RESPONSE_X-AspNetMvc-Version" />
                <remove name="RESPONSE_SERVER" />
                <rule name="RESPONSE_SERVER" enabled="true">
                    <match serverVariable="RESPONSE_SERVER" pattern=".+" />
                    <conditions />
                    <action type="Rewrite" value="MYJ" />
                </rule>
                <rule name="RESPONSE_X-AspNetMvc-Version" enabled="true">
                    <match serverVariable="RESPONSE_X-AspNetMvc-Version" pattern=".+" />
                    <conditions />
                    <action type="Rewrite" value="MYJ" />
                </rule>
                <rule name="AddSameSiteCookieFlag" enabled="true" stopProcessing="true">
                    <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*)(CFID|CFTOKEN|SameSite)(=.*)$" />
                    <conditions />
                    <action type="Rewrite" value="{R:1};SameSite=None;Secure;" />
                </rule>
            </outboundRules>
        </rewrite>

  </system.webServer>

 

重啟站點,完成!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM