背景:我编写了一个书签(JavaScript),它将iframe附加到您正在查看的当前页面。这个iframe的src属性指向我的(rails)应用程序上的表单。我需要通过修改输入字段的一个值或将值作为参数传递给调用表单操作的url的末尾,将键传递到表单(来自书签)。
我真的没有看到如何做前者的方法,而后者似乎是一场等待发生的安全灾难。我想知道最佳做法是什么?
答案 0 :(得分:2)
将一个查询字符串参数附加到URL似乎是合理的,但你是对的 - 有安全隐患。该值将显示在用户的浏览历史记录中,并且在未加密的HTTP(但不是HTTPS)上可见。
还有另一种基于Javascript的方法,但尚未广泛支持,但值得考虑 - window.postMessage
。它允许指定域中的页面使用熟悉的基于事件的模型发送和接收消息。请参阅https://developer.mozilla.org/en/DOM/window.postMessage。
答案 1 :(得分:1)
这听起来与我使用iFrames制作的AJAX框架非常相似。最简单的方法是让你的bookmarklet建立一个查询字符串并将其放在iFrame的src上。如果你需要改变任何东西,你应该能够将iFrame的src设置为“#param = value”并让iFrame中的页面注册onhashchange事件来处理它(这将是你如何去做前者)
所以你的代码可以是:
var iframe = document.createElement('iframe');
iframe.src = "http://example.com/mypage?param1=value1¶m2=value2";
document.body.appendChild(iframe);
和/或:
iframe.src = "#param1=value1";
// This in the iframe:
document.onhashchange = function() {
// parse location.hash and process form
}
答案 2 :(得分:0)
许多方案在URL的片段部分传递秘密,然后,在页面加载的早期,存储它并将片段设置为空白。我认为webkeys会这样做。
在webkeys页面上,具体参见
将不允许的权限密钥放入片段中会生成一个https URL,其格式如下:https://www.example.com/app/#mhbqcmmva5ja3。