【问题标题】:Read query string parameters from inside iframe从 iframe 内部读取查询字符串参数
【发布时间】:2013-04-10 06:25:19
【问题描述】:

我有一个 Web 应用程序,它位于另一个 Web 应用程序的 iframe 中(两者都在 ASP.NET MVC 中完成)。

是否可以使用 C# 从 iframe 内的应用程序中读取来自父 Web 应用程序的查询字符串参数?

【问题讨论】:

  • 请在每个相关页面的域 (url) 上添加信息 - 感觉您可能正在尝试使用错误的方法解决同源策略限制...

标签: c# asp.net-mvc iframe query-string


【解决方案1】:

您必须将要从父页面读取的任何数据从 iframe 内的页面附加到 iframe url 本身。 例如:

<iframe id="yourid" src="yourpage.aspx?parentdata=whatever_data_to_be_captured">
</iframe>

现在,您必须从 iframe 页面解析 src 值以捕获数据。

这是一个技巧,据我所知,似乎没有直接的方法可以从 iframe 访问父页面数据。

【讨论】:

  • 我也在考虑同样的事情,但我想知道是否有另一种方法可以做到这一点,而无需在 iframe src 属性中注入参数。
  • 不行,没有别的办法,否则会造成安全隐患。
【解决方案2】:

window.parent 应该为您提供对 Parent 的引用。还有一个 window.top 提供直接父级,因此如果您的应用程序嵌套多次,您应该使用正确的属性。

您可以从那里执行window.parent.location(或window.top.location),它具有请求的 URL 的各种属性。

要真正阅读查询字符串,这里有关于它的帖子。您只需要将 window.location 替换为 window.parent 或 window.top :

在此处查看答案:How to get the query string by javascript?,在此处查看更详细的答案:How can I get query string values in JavaScript?


在控制器中:既然你说你需要控制器中的查询字符串。您仍然需要像我上面描述的那样获取查询字符串,然后通过将其放入对内部框架的 src 的调用中,将其传递给控制器​​。

<iframe src=""></iframe>

这完全取决于您如何以及何时设置内框的src 属性。您需要在某个时候以某种方式对其进行更改。

从你的外框你可以做:

document.getElementById('myframe').src
 = "http://innerApplication/innerController/actionmethod/?" 
   + window.location.search;

或者,从框架本身内部,您将首先获取查询字符串,然后通过 window.[top/parent].location = the url + query string 执行重定向/重新加载

然后您将读取查询字符串,就好像它是内部应用程序的查询字符串一样。

【讨论】:

  • 我需要从后面的代码中执行此操作(在我渲染页面以访问 javascript 之前)
  • 后面的代码是指控制器吗?您需要知道控制器中的查询字符串参数吗?然后在内部框架中,您需要向控制器发出请求并将查询字符串作为参数从 javascript 传递给控制器​​,然后您将在 javascript 中获取查询字符串,就像我描述的那样
  • 是的,没错,我需要在渲染 html 页面之前从控制器访问查询字符串
【解决方案3】:

你应该使用%26而不是&amp;来发送到iframe,例如:

Link : 2.asp?ppp=/Payam.asp?sid=1%26PID=1&sa=12313 <br>

在代码中:当我在父级中 requset.queryString("ppp") 时,它显示:/Payam.asp?sid=1&amp;PID=1

您可以将其用作 iframe 的来源,它有两个参数:

<IFRAME name="My"  src='<%=ppp %>'></IFRAME> 

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多