PHP重定向使用headers()和HTTP请求头


PHP redirect using headers() and HTTP request headers

我正在研究一个web应用程序,它可以使用两个HTTP请求头字段验证用户:userrole

使用公司的单点登录服务,我想实现以下目标:

user --> SSO --> header(location: http://app, '
                        user    : username,   | --> application
                        role    : rolename)   /

基本上,我想从SSO页面重定向application上的用户。SSO页面是一个小PHP脚本,它查找正确的用户名和角色,然后执行对header()函数的调用:

  header('user: username');
  header('role: rolename');
  header('location: http://application/login');

问题是字段userrole似乎在重定向期间被删除(我使用Chrome与HTTP头扩展来监控该进程)。

另外,当我手动设置标题时(使用修改标题Chrome扩展),一切都很好。所以我认为web应用程序不是问题所在。

最后一件事:我不是web应用程序的开发人员,它是一个商业产品。因此,我没有办法修改应用程序本身。

事先非常感谢您的帮助:)

简而言之:服务器不控制客户端在下一个请求中发送哪些报头。你在这里设置的是响应头,这些头与从服务器到客户端的响应一起出现。他们应该向客户提供信息。客户端可能会也可能不会向服务器发出另一个请求,它完全由自己选择发送哪个报头。

唯一"持久"的标头是cookie,这正是它们的目的。如果这不是一个选项,例如,因为域名不同,您将不得不在您重定向到的URL中作为查询参数传递信息。

或者你需要通过AJAX来做所有的事情,你可以使用Javascript自己控制发送的头。

在重定向时没有办法保留标题。参见SO上的问题:

如何在HTTP重定向中转发标头