第三方使用Ifream嵌套星空页面无法打开或者登录问题
原始反馈:
1、第三方系统ifream嵌套金蝶云星空,提示:登录状态丢失;
2、第三方系统ifream嵌套金蝶云星空,提示拒绝了我们的访问
原因分析:
1、windows服务器 .netframework 4.7.2版本,sameSite 默认值是Lax,4.7.2以前的版本默认值是None;(Lax表示不允许跨域,None表示可以跨域);
2、按说即使sameSite设置为Lax,不跨域的话,也不会发生session丢失的情况,但是钉钉认为:访问不同的页面也是跨域。。结果就是,session丢失,从而导致页面显示登录失败;
3、目前在页面嵌套时会发生,跟这些机型webview的内核有关 ;
4、公有云环境设置安全策略不允许页面嵌套
解决办法:
只需要修改服务器配置即可,不需要写代码 (.netframework 版本在 4.7.2以下不会登录失败,不需要解决);
1、确保服务器对应的.netframework 版本在 4.7.2及以上,如果不是这个版本以上修改会报错;
2、修改webconfig,确保包含以下配置,请参考图片进行修改:
<configuration>
<appSettings>
<add key="aspnet:SuppressSameSiteNone" value="true" />
</appSettings>
</configuration>
注意 :修改示例,修改前一定要备份
3.安装微软 IIS URL Rewrite 模块; https://www.iis.net/downloads/microsoft/url-rewrite
配置rewrite规则,路径【configuration/system.webServer】节点下,规则如下(默认值设置为None,如果没有iframe嵌套集成和移动应用,则可以设置为Lax):
<rewrite> <outboundRules> <rule name="AddSameSiteCookieFlag"> <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*)(kdservice\-sessionid|ASP\.NET_SessionId|JSESSIONID)(=.*)$" /> <action type="Rewrite" value="{R:0};SameSite=None" /> </rule> </outboundRules> </rewrite>
4、修改后,重启iis;
Tip1:查询.netframwork版本的dos命令:
cd %WINDIR%\Microsoft.NET\Framework\v4.0.30319
MSBuild /version
Tip2:在 ASP.NET 中使用 SameSite cookie 的相关知识:
https://docs.microsoft.com/zh-cn/aspnet/samesite/system-web-samesite#known
其它参考文档:
https://wenku.my7c.com/article/136841261830379264
https://wenku.my7c.com/article/10581
第三方使用Ifream嵌套星空页面无法打开或者登录问题
本文2024-09-16 18:39:27发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23561.html