有A,B两个网站,分别部署在不同的服务器上。假设A网站的域名是 http://www.A.com
B网站的域名是http://www.B.comA网站是个实质性的网站,有其代码和数据库。
B网站里面只有一个页面,里面只是内嵌了一个iframe,src为http://www.A.com。目标:就是为了在访问B网站的时候,地址栏里面的地址始终是http://www.B.com,而实际上使用的全是A网站的内容。在A网站里面有个菜单,根据用户的登录状态,显示不同的内容。因此在后台用session来保存登录状态,并在后台判断这些状态,控制菜单内容的显示。现在的问题是,通过A网站的域名直接访问A网站,菜单能够根据用户的登录状态显示不同的内容。但是通过B网站的域名来使用A网站时,菜单却没有变化。请帮忙分析一下原因,给出一些解决方案。至于把A网站的内容,放到B网站的服务器上这样的方案,老板肯定是不同意,所以就不用说了。将A网站的域名改成B网站的域名,老板也不同意。现在他要求的就是通过修改A网站的代码,实现目标。
B网站的域名是http://www.B.comA网站是个实质性的网站,有其代码和数据库。
B网站里面只有一个页面,里面只是内嵌了一个iframe,src为http://www.A.com。目标:就是为了在访问B网站的时候,地址栏里面的地址始终是http://www.B.com,而实际上使用的全是A网站的内容。在A网站里面有个菜单,根据用户的登录状态,显示不同的内容。因此在后台用session来保存登录状态,并在后台判断这些状态,控制菜单内容的显示。现在的问题是,通过A网站的域名直接访问A网站,菜单能够根据用户的登录状态显示不同的内容。但是通过B网站的域名来使用A网站时,菜单却没有变化。请帮忙分析一下原因,给出一些解决方案。至于把A网站的内容,放到B网站的服务器上这样的方案,老板肯定是不同意,所以就不用说了。将A网站的域名改成B网站的域名,老板也不同意。现在他要求的就是通过修改A网站的代码,实现目标。
解决方案 »
- 求助globa.asax问题
- 怎么修改并保存编辑器里的内容啊 求高手指教
- 奇怪的SqlDatetime溢出,一切正常,就是溢出,上代码
- treeview 邦定数据
- 请问,如果我用sina的SMTP服务器,用代码怎么实现验证、登陆名、登陆密码
- 我用DateTable生成了一张表,里面有几行数据,我把它绑定到DataGrid上,但DataGrid上的列的文字大小,和每个列的宽度都不能调,急~~~~~~~
- 將10M(60张)图片的名称录入到数据库的问题
- 求教ASP.NET MVC如何制作一个视频播放页面
- 难题求教: 如何由字符串, 转换成控件对象, 第一次碰到这样的需求, 头麻!!! 谢谢!!!
- 如何提高写文件时的速度?
- ADO.NET中五大主要对象
- 有一个题目表Repeater梆定问题
但是通过B网站来访问A网站,菜单就没有变化了。
但是通过我上面说的特殊处理过的B网站,菜单项就有问题了。没有根据登录的状态做变化了。
但是通过域名www.B.com登录以后,虽然也显示了登录以后的页面,但是菜单的状态没有变化。
机器都不同不能跨域进行cookies操作的
自己编写session封装函数,将session数据保存到数据库中;
在调用session_start()函数之前,首先调用session_set_cookie_params,设置为bb.com
----------------------------------------------------------------------------
在调用session_start()函数之前,首先调用session_set_cookie_params,设置为bb.com、
----------------------------------------------------------------------------
这句话可否能够给些代码看看。以前没有写过这样的代码。
另外其他朋友有没有什么方法,请不吝赐教。
Session不同的站点也不能共享吧
大家踊跃发言,跟我解决方法一样的第一个人,给80分。
wuyq11 80分,谢谢他给的方案。
剩下的分给顶贴的朋友。大家皆大欢喜。
这个是跨域访问的安全性问题,浏览器默认情况下是不允许跨域提交cookie的,而sessionid是保存在cookie中的,所以导致A站页面被嵌入后无法使用session。去google搜索:p3p iframe 提交cookie,有答案。
打开IIS管理器,打开ASPX页面所在的那个站点的属性->HTTP头->添加按钮自定义HTTP头为 P3P
自定义HTTP头值为 CP=”CAO PSA OUR”然后保存,再试ASPX访问一切正常。
在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="40"
/>
把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()为好。除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不移定,是有时会丢,有时不会丢,这更认人头痛,在网上找到了一个方法,在页面page_onload里添加一语句:
Response.AddHeader("P3P","CP=CAO PSA OUR");
FrameSet中的Session丢失问题就解决了。