【问题标题】:Is it possible write a cookie with the current url using Apache是否可以使用 Apache 用当前 url 写一个 cookie
【发布时间】:2013-10-09 14:39:12
【问题描述】:

我正在使用的第三方应用程序通常允许用户在网站的任何位置添加书签。登录后,用户将被重定向到请求的原始页面。不幸的是,通过委托定制的单点登录,此功能会丢失。也就是说,如果您使用书签访问产品中的特定页面(或收到电子邮件或关注外部链接),如果您尚未登录,则转到登录页面,然后返回主页面应用程序页面而不是请求的页面。

如果我可以使用请求的原始 URL 设置一个 cookie,我就可以通过 JavaScript 使用该信息来更改登陆主页时的位置。

假设主页是 /app/index.jsp - 如果我可以获得一个 cookie 来记住除此之外的任何 URL - 我可以恢复用户在登录后转到所请求页面的功能。这是可能的?

【问题讨论】:

  • 有趣的问题...我有时会同时打开几个书签(在我的浏览器中,中间单击书签文件夹)。我想不出在这种情况下可靠工作的解决方法。无论如何,在重定向到 SSO 登录页面之前使用 Java 生成 cookie 不是更容易吗?
  • 我无权访问 Java 代码。我可以让供应商托管工具来更改 Apache 配置,我可以轻松地将 JavaScript 添加到产品中 - 但我没有能力为它编写 Java,除非我们将它引入内部。

标签: apache mod-rewrite cookies


【解决方案1】:

我自己找到了解决方案... 使用 mod_rewrite 我可以通过查找 JSESSIONID cookie 来键入初始请求。以下放在我的服务器虚拟主机部分中时实现了我的目标。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/app/*$
RewriteCond %{REQUEST_URI} !^/content/.*$
RewriteCond %{REQUEST_URI} !^/app/adm/.*$
RewriteCond %{REQUEST_URI} !^/app/index\.jsp$
RewriteCond %{REQUEST_URI} !^/favicon\.ico$
RewriteCond %{HTTP:Cookie} !^.*JSESSIONID=.*$
RewriteRule . - [co=appURI:%{REQUEST_URI}?%{QUERY_STRING}:.mydomain.com]

注意:我在上面为我不想为其设置 cookie 的页面添加了一些过滤器。我使用 JavaScript 在应用程序中检测、取消设置 cookie 和重定向以实现我的目标。

var appURI = getCookie("appURI");
if (typeof(appURI) != "undefined" && appURI != null && appURI != "") {
  mydomain.console.log("Found URI from SSO relocating to: " + appURI);
  setCookie("appURI", "", -1, "/", "mydomain.com");
  document.location.href = appURI;
}

请注意,上面的“setCookie”和“mydomain.console.log”是专有但简单的函数,它们根据它们的名称执行明显的操作。

【讨论】:

    猜你喜欢
    • 2015-02-15
    • 2012-06-19
    • 1970-01-01
    • 2011-02-22
    • 2014-05-29
    • 1970-01-01
    • 2011-09-12
    • 2017-06-14
    相关资源
    最近更新 更多