【问题标题】:PHP header request not received未收到 PHP 标头请求
【发布时间】:2020-10-14 07:19:48
【问题描述】:

我正在通过 ajax 传递标题,

$.ajax({
     headers: {
          key: value
     }
});

我可以在浏览器中看到Request Header 中的值。我正在使用 Codeigniter 通过$this->input->get_request_header('key') 获取密钥。

在本地运行正常,但在服务器上运行不正常。

我已经尝试过 apache_request_headers()$_SERVERgetallheaders() 等等。但我在这个数组中看不到我的自定义标题。

那么如何通过 PHP 获取这个自定义的 header 呢?

【问题讨论】:

  • 您使用的是哪个版本的 codeigniter,因为 4.0.3 与 3.1.11 非常不同

标签: php apache codeigniter


【解决方案1】:

我在使用 Codeigniter 3 和 Authorization 标头时遇到了这个问题。它在本地工作,但在服务器上不起作用。我发现其他标题也可以工作——我将Authorization 更改为Authorization2 只是为了测试。 PHP getallheaders() 方法还返回了过滤掉 Authorization 标头的所有标头。

这让我找到了this answer,所以我添加了:

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

.htaccess 文件,Authorization 标头重新出现。

【讨论】:

    【解决方案2】:

    这是一个如何在 Ajax 请求中设置标头的示例。

    $.ajax({
        type: "POST",
        beforeSend: function (request) {
            request.setRequestHeader(key, value);
        },
    });
    

    通过以这种方式发送它,您不必在后端使用 Codeigniter 3.1.11 接收它时遇到问题,该版本包含您正在使用的功能。

    返回请求标头数组的单个成员,如果 未找到搜索到的标头。

    $this->input->get_request_header('some-header', TRUE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 2014-01-17
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      相关资源
      最近更新 更多