我的第一个问题在这里。
这里是任务。我有一个按钮想要放在第三方网站上。当用户单击该按钮时,将通过javascript window.open方法打开一个新窗口。在该窗口中,用户被重定向到我的Web应用程序,并且必须登录。现在,我如何确定用户来自何处(例如,他单击了哪个网站)。基本上我想要两件事-确保我可以跟踪弹出窗口打开时单击该按钮的网站,并且还确保只有订阅者才能使用该按钮(第一个条件将使它成为可能,因为我将能够过滤掉该按钮基于URL的未经授权的请求)。
显然window.opener无效,因为它是跨域的,浏览器不允许使用。
[我的一个想法是,在页面加载时使用脚本中的CORS请求,这将调用我的服务器,服务器将生成一些秘密并设置cookie,然后返回另一个包含window.open调用的javascript代码以及该秘密作为参数,另一个参数将从document.location分配值(这基本上会将当前URL设置为参数)。从理论上讲,这应该确保从我的服务器合法地收到了名为popup的脚本-因此它提供的URL是正确的。否则,如果有人创建自己的脚本来调用我的弹出窗口-他们当然可以将所需的任何URL设置为参数,但他们将不知道正确的cookie秘密。
[请让我知道我的方法是否正确,不能被黑客入侵或是垃圾?还有没有更好的方法可以做到这一点?
我已经研究和思考了几天,它伤了我的大脑。
预先感谢大家-感谢您的帮助。
您可以将其保存在变量中并重定向。
就Cookie而言,如果第三方表示不同的域,则不能跨域访问Cookie。
这里的唯一方法是在此处描述的窗口之间使用消息发送机制(Web消息传递):http://en.wikipedia.org/wiki/Web_Messaging
看来所有主流浏览器现在都支持此功能。
它允许将消息发送到具有不同域的另一个窗口并设置期望的域,因此在接收窗口中,您还可以设置可以从中接收消息的期望的域-通过这种方式,您可以确定该特定域已发送了消息,并且可以保证打开器的URL。