我有以下情况。
在我的网站上,我有一个付费订阅,客户可以登录并查看PDF格式的html5翻页。这是我使用iFrames。问题是,链接正在传播给非付费用户,这是我想要阻止的。我尽可能地使用JS来阻止人们检查代码。所以这有点照顾。但苹果公司是苹果公司,它并不是真正的iFrames并且做了自己的事情。当您以全屏方式打开翻书时,它会显示URL并再次传播。 iFrame和实际的flipbook都在同一台服务器和域上运行。
我的问题是,有没有办法阻止URL在直接访问但仍在iFrame中打开时打开?还是我想要实现不可能的?也许你有更好的解决方案吗?
请让我知道,我对所有事情都持开放态度。
PJ
答案 0 :(得分:0)
您可以使用iframe中的加密数据和使用父页面中的变量解码数据的脚本来完成此操作。
仅当资源位于同一域,相同协议和相同端口下时,才能执行此操作。 (阅读有关CORS的内容)。
所以,你应该:
创建一个内部带有iframe的页面和用于解密数据的密钥。必须使用新密钥对每个请求加密数据。
在iframe中显示的页面中创建一个脚本,该脚本应使用在父页面中检索到的密钥解密页面数据。
查看这个小脚本以便更好地理解:
// In your page
window.key = 'KEY';
// In your iframe
window.encrypted = 'The encrypted data that you will show to the user';
window.decrypt = function() {
// Here you should get window.key
// Then you have to decrypt window.encrypted
// When you finished, you should show the result to the user
}
同时查看tec对此问题的回答:accessing variable in parent page from iframe
答案 1 :(得分:0)
那些寻求答案的人。我做了以下。
function CheckIframe() {
var defaultUrl = "Redirect URL";
if (window.parent.location == document.location) {
alert("Incorrectly loaded");
document.location = defaultUrl;
}
}
开始标记中包含onload =“CheckIframe()”。
基本上,当您打开iframe外部的链接时,它会发出警报,一旦您关闭警报,您就会被重定向到defaultUrl。
当然客户端可以在他们的浏览器中关闭JS,但这是一些东西。