我只是想澄清一下。
假设我有一个小网页表单,一个'小部件',如果你愿意,它可以获取数据,对它进行一些客户端验证或其他AJAX-y废话,点击按钮会指向另一个页面。
如果我希望这是一个'可嵌入'组件,那么其他人可以将其粘贴在他们的网站上,我是否仅限于将其封装在iframe中?
对于我在iframe中能做什么和不能做什么都有限制?
例如,将您带到另一个页面的按钮 - 这会在iframe中加载内容吗?那么它需要与iframe一起存在吗?
最后,如果用户点击的按钮将他们带到https页面以验证信用卡详细信息,是否有任何特定的安全措施可以阻止这种情况发生?
编辑:有关我所了解的示例,请考虑在网页上嵌入googlemaps或multimap。
编辑编辑:好的,我想我明白了。有两种方式。
One - 嵌入IFrame,但这是有限的。
两个 - 创建一个Javascript API,并要求消费者链接到此。但对于消费者和创作者来说,这都复杂得多。
我做对了吗?
由于 邓肯
答案 0 :(得分:2)
这两种方法都有加分。我是一个,不会在我的页面上使用另一个人的Javascript,除非我绝对肯定我可以信任来源。制作提交页面上所有输入框值的恶意脚本并不难。如果您不需要访问页面内容,那么使用iframe将是最佳选择。
可以“告诉”按钮和链接使用目标属性导航顶部或父框架,如下所示:
<a href="http://some.url/with/a/page" target="_top">This is a link</a>
<form action="http://some.url/with/a/page" target="_parent"><button type="submit">This is a button</button></form>
在这种情况下,由于您正在离开托管页面,因此不会应用同源策略。
在类似的情况下,小部件通常是放在页面上的iframe。 iGoogle和Windows Live小工具(据我所知)在iframe中托管,并且有很好的理由 - 安全性。
答案 1 :(得分:2)
如果您使用的是AJAX,我假设您有一个用C#或Java或某种OO语言编写的服务器。 只有语法会有所不同才是真正重要的。
无论哪种方式,我都会建议不要使用iFrame方法。 它将打开方式太多的漏洞或问题,如Http与Https(或反之亦然)在iFrame中将显示混合内容警告。
那你做什么?
您知道如何进行AJAX只需向远程站点添加服务器端调用。
爪哇:
URL url = new URL("http://www.WEBSITE.com");
URLConnection conn = url.openConnection();
或
C#:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.WEBSITE.com");
WebResponse res = req.GetResponse();
答案 2 :(得分:1)
我认为您希望尽可能避免使用内联框架。虽然它们有时很有用,但它们可能会导致导航和书签问题。一般来说,如果你可以采用其他方式而不是iframe,那就是更好的方法。
鉴于您制作了一个AJAX引用,Javascript指针可能是最好的选择,即嵌入您需要在脚本标记中执行的操作。请注意,这就是Google嵌入Google Analytics和Google Ads等内容的方式。它还有一个好处,也可以从您托管的URL中进行拉取,因此您可以更新代码并在所有使用它的网页中“激活”它。 (Google通常也会使用版本号,因此他们在进行更改时不会切换每个人。)
重新信用卡方案,Javascript受“同源政策”的约束。有关说明,请参阅http://en.wikipedia.org/wiki/Same_origin_policy
已添加:Google地图以相同的方式工作,并提供一些警告,例如明确指出使用该代码的用户/网站密钥。
答案 3 :(得分:0)
使用像jQuery这样的东西,为你的组件创建一个“插件”,只有一种方式,只是一个想法,但如果你想与其他人分享组件使用这是可以做的事情之一