通过内嵌iframe访问其他网站的问题

wxhysoftsodc 2010-01-30 06:25:21
有A,B两个网站,分别部署在不同的服务器上。

假设A网站的域名是 http://www.A.com
B网站的域名是http://www.B.com

A网站是个实质性的网站,有其代码和数据库。
B网站里面只有一个页面,里面只是内嵌了一个iframe,src为http://www.A.com。

目标:就是为了在访问B网站的时候,地址栏里面的地址始终是http://www.B.com,而实际上使用的全是A网站的内容。

在A网站里面有个菜单,根据用户的登录状态,显示不同的内容。因此在后台用session来保存登录状态,并在后台判断这些状态,控制菜单内容的显示。

现在的问题是,通过A网站的域名直接访问A网站,菜单能够根据用户的登录状态显示不同的内容。但是通过B网站的域名来使用A网站时,菜单却没有变化。

请帮忙分析一下原因,给出一些解决方案。至于把A网站的内容,放到B网站的服务器上这样的方案,老板肯定是不同意,所以就不用说了。将A网站的域名改成B网站的域名,老板也不同意。现在他要求的就是通过修改A网站的代码,实现目标。
...全文
2679 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxhysoftsodc 2010-02-04
  • 打赏
  • 举报
回复
贴一下自己搜到的方案:

处理方法:
打开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丢失问题就解决了。
wxhysoftsodc 2010-02-02
  • 打赏
  • 举报
回复
顶一顶
chengjianhuadi 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 mengxj85 的回复:]
跨域 信息不能共享了
[/Quote]
那样数据库要放多少东西呀。。。
不可取
mengxj85 2010-02-01
  • 打赏
  • 举报
回复
考虑将用户信息存到数据库,像一般用session存放的内容,放到数据库
mengxj85 2010-02-01
  • 打赏
  • 举报
回复
跨域 信息不能共享了
wxhysoftsodc 2010-02-01
  • 打赏
  • 举报
回复
绝对不是为了干坏事。我保证。只是需求比较奇怪而已。
我的问题已经解决了,我只是想看看别人有什么方案。顺便把分给散了。
cyhcyhhychyc 2010-01-31
  • 打赏
  • 举报
回复
gggg
lovexilove 2010-01-31
  • 打赏
  • 举报
回复
up
vip__888 2010-01-31
  • 打赏
  • 举报
回复
友情Up
sunhahaha2 2010-01-31
  • 打赏
  • 举报
回复
把登陆状态的保存, 用Cookie来替代Session试试呢
xierfly 2010-01-31
  • 打赏
  • 举报
回复
首先,不能用SSO登录,域不一样;
Session不同的站点也不能共享吧
wxhysoftsodc 2010-01-31
  • 打赏
  • 举报
回复
谢谢楼上的大牛。
----------------------------------------------------------------------------
在调用session_start()函数之前,首先调用session_set_cookie_params,设置为bb.com、
----------------------------------------------------------------------------
这句话可否能够给些代码看看。以前没有写过这样的代码。


另外其他朋友有没有什么方法,请不吝赐教。
huguojunsy 2010-01-31
  • 打赏
  • 举报
回复
又一个干坏事的?
这个是跨域访问的安全性问题,浏览器默认情况下是不允许跨域提交cookie的,而sessionid是保存在cookie中的,所以导致A站页面被嵌入后无法使用session。

去google搜索:p3p iframe 提交cookie,有答案。
mengjun5200 2010-01-31
  • 打赏
  • 举报
回复
希望LZ尽早解决自己的问题
wxhysoftsodc 2010-01-31
  • 打赏
  • 举报
回复
有新的方案赶紧说啊,等着结帖呢。嘿嘿
whb147 2010-01-31
  • 打赏
  • 举报
回复
luguo
围观
liyoubaidu 2010-01-31
  • 打赏
  • 举报
回复
我也遇到过,up
happy664618843 2010-01-31
  • 打赏
  • 举报
回复
解决就好 那JF的
yagebu1983 2010-01-31
  • 打赏
  • 举报
回复
把两个网站集成到一起试试
TalesTen 2010-01-31
  • 打赏
  • 举报
回复
up
加载更多回复(15)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧