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

时间:2015-08-17 07:27:24

标签: php header http-redirect

我正在开发一个可以使用两个HTTP请求标头字段对用户进行身份验证的Web应用程序:userrole

使用公司的SSO服务,我想实现以下目标:

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

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

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

问题是,在重定向期间似乎删除了字段userrole(我使用带有HTTP标头扩展名的Chrome来监控进程)。

此外,当我手动设置标题时(使用修改标题Chrome扩展程序),一切正常。所以我认为Web应用程序不是问题所在。

最后一件事:我不是网络应用程序的开发者,这是一种商业产品。所以,我无法修改应用程序本身。

非常感谢您提前寻求帮助:)

2 个答案:

答案 0 :(得分:0)

简而言之:服务器无法控制客户端在下一个请求中发送的头。您正在设置的是响应标头,标头与服务器到客户端的响应一起使用。他们应该向客户提供信息。然后,客户端可能会或可能不会向服务器发出另一个请求,它自己只选择要发送的头。

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

或者你需要通过AJAX完成所有事情,你可以使用Javascript自己控制发送的标题。

答案 1 :(得分:0)

无法在重定向上保留标头。 在SO上看到这个问题:

How to forward headers on HTTP redirect