【问题标题】:PHP redirect using headers() and HTTP request headers [duplicate]使用 headers() 和 HTTP 请求标头的 PHP 重定向 [重复]
【发布时间】:2015-11-09 18:20:35
【问题描述】:

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

使用公司的SSO服务,我想实现如下:

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 字段似乎在重定向期间被删除(我正在使用带有HTTP 标头扩展的Chrome 来监控该过程)。

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

最后一件事:我不是 Web 应用程序的开发人员,这是一个商业产品。所以,我无法修改应用程序本身。

非常感谢您的任何帮助:)

【问题讨论】:

    标签: php header http-redirect


    【解决方案1】:

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

    How to forward headers on HTTP redirect

    【讨论】:

      【解决方案2】:

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

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

      或者,您需要通过 AJAX 执行所有操作,您可以在其中使用 Javascript 自己控制发送的标头。

      【讨论】:

        猜你喜欢
        • 2014-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        • 2011-06-16
        • 2015-01-20
        • 2021-07-16
        相关资源
        最近更新 更多