Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Apache编写具有当前url的cookie_Apache_Mod Rewrite_Cookies - Fatal编程技术网

是否可以使用Apache编写具有当前url的cookie

是否可以使用Apache编写具有当前url的cookie,apache,mod-rewrite,cookies,Apache,Mod Rewrite,Cookies,我正在使用的第三方应用程序通常允许用户在网站的任何位置为页面添加书签。登录后,用户将被重定向到请求的原始页面。不幸的是,通过委托单一登录定制,此功能丢失。也就是说,如果您使用书签访问产品中的特定页面(或获取电子邮件或跟踪外部链接),如果您尚未登录,请转到登录页面,然后返回到主应用程序页面,而不是请求的页面 如果我可以使用请求的原始URL设置cookie,那么我可以通过JavaScript使用该信息在登录主页时更改位置 假设主页是/app/index.jsp——如果我可以得到一个cookie来记住

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

如果我可以使用请求的原始URL设置cookie,那么我可以通过JavaScript使用该信息在登录主页时更改位置


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

我自己找到了解决办法。。。 使用mod_rewrite,我可以通过查找JSESSIONID cookie来输入初始请求。在我的服务器virtualhost部分中放置以下内容实现了我的目标

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”是专有但简单的函数,它们根据名称执行明显的操作。

有趣的问题。。。有时我会同时打开几个书签(在浏览器中,用鼠标中键单击书签文件夹)。在这种情况下,我想不出可靠的解决方法。无论如何,在重定向到SSO登录页面之前,用Java生成cookie不是更容易吗?我没有访问Java代码的权限。我可以让供应商托管设备进行Apache配置更改,并且我可以轻松地将JavaScript添加到产品中——但我没有能力为它编写Java,除非我们把它带到公司。