这是对我上一个问题的跟进:Problem passing parameters via Iframe in IE。这从未解决过。
以下是它的核心:
我正在尝试执行HTTP GET 我的网站是另一个网站 通过iframe引入。
在Firefox上,您可以在源代码中看到 正确的网址在iframe中 src和它是正确的 参数 - 并且它有效。
在IE上,你可以在源代码中看到 正确的网址在iframe src中 以及它的正确参数 - 它不起作用......
是否有关于IE的内容 不允许你传递参数 通过查询字符串中的iframe?
我尝试刷新iframe IE,我试过刷新我的页面& IE中的iframe,我试过了 复制网址并将其重新粘贴到 iframe src(强制刷新 好像我刚进入了 该iframe窗口的地址栏)。 仍然没有运气!
任何人都知道为什么会这样,或者 有什么建议可以试试 在这附近?
至于代码,它正在做的就是创建 来自页面后端代码的src 加载并设置src属性 从后端......
//Backend code to set src
mainIframe.Attributes["src"] = srcWeJustCreated;
//Front end iframe code
<iframe id="mainIframe" runat="server" />
我已经为您准备了一个临时帐户,可以登录并查看我的意思。这样你就可以使用firebug或任何其他调试技术来弄清楚为什么这不起作用而不是让我试着解释发生了什么。
编辑:更改了帐户凭据。请改用此
用户名:亚光
密码:全球购买
请按this link进入登录页面。使用上述凭据登录后,您将进入主后端页面。点击左侧显示“假期”的图片,该图片会显示带有iframe的页面,并会从那里执行Http Get。
如果您需要有关后面代码中发生的事情的更多详细信息,请告诉我,我会发布它们。
谢谢,
马特
答案 0 :(得分:12)
在使用Fiddler2处理HTTP请求后,比较不同的浏览器,我发现IE使请求很好,但无法在iframe
中设置任何cookie。
我还注意到,如果我单独打开该框架页面,它确实有效。更重要的是,在那里再次退出之后,iframed版本也能正常工作。那是因为它已经有一个会话cookie,iframe
不再需要设置它。
事实证明这是一个已知的安全限制:IE在iframe中阻止cookie。但是使用Platform for Privacy Preferences (P3P)可以克服这个问题。
以下是一些可以帮助您解决问题的链接。从StackOverflow上的另一个(已回答)问题开始:
答案 1 :(得分:0)
您提供的示例页面在IE8中为我工作。 iframe不像chrome中那么高,但它确实有正确的页面。
顺便说一句,请注意,通过查询字符串传递登录凭据非常不安全,并且可以使用各种漏洞。
答案 2 :(得分:0)
似乎iframe网址中的&符号是HTML编码的(&
)。
我认为这可能会导致IE阻塞识别param名称。如果在URL中使用普通的&符号,问题是否仍然存在?
如果src属性的编码是隐式发生的,您可能需要考虑使用Literal
控件进行测试,并将其Text
属性设置为整个iframe标记,以避免任何不需要的编码。