如何发送自定义 HTTP 标头作为响应?

2023-12-26

我想在我的 HTTP 标头中发送 json 数据。

我使用的是 Codeigniter PHP,所以我在控制器中执行了以下操作:

header('Content-Type: application/json');'

这是我的代码:

$request = array(

    'request' => $_GET['request'],
    'device_id' => $_GET['device_id'],
    'launch_date'=> $_GET['launch_date'],
    'allowed_hours'=>$_GET['allowed_hours'],
    'site_id'=>$_GET['site_id'],
    'product'=>$_GET['product'],
    'software_version'=>$_GET['software_version'],
    'platform_os'=>$_GET['platform_os'],
    'platform'=>$_GET['platform'],
    'platform_model'=>$_GET['platform_model']

     );
$response = array(
    'response_code' =>200 ,
    'device_id'=>$_GET['device_id'],
    'allowed_hours'=>$_GET['allowed_hours'],
    'product'=>'mlc',
    'prov_ur'=>NULL 
);

header('Content-Type: application/json');
echo json_encode( $response );

但是当我打印标题时我得到

A PHP Error was encountered

严重性:通知

消息:未定义索引:请求

文件名:admin/license.php

线路数量:22

A PHP Error was encountered

严重性:通知

消息:未定义索引: 允许的小时数

文件名:admin/license.php

电话号码: 25

A PHP Error was encountered

严重性:通知

消息:未定义索引: 允许的小时数

文件名:admin/license.php

电话号码: 40

{“response_code”:200,“device_id”:“70D0D01FBAD2”,“allowed_hours”:空,“产品”:“mlc”,“prov_ur”:空}数组(10) { ["主机"]=> 字符串(14) "192.168.50.123" ["连接"]=>
字符串(10)“保持活动”[“缓存控制”] =>字符串(9)“最大年龄= 0” [“接受”]=> 字符串(74) “文本/html,应用程序/xhtml+xml,应用程序/xml;q=0.9,图像/webp,/;q=0.8" [“升级不安全请求”]=> 字符串(1)“1”[“用户代理”]=>
字符串(110)“Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36 (KHTML,如 Gecko)Chrome/47.0.2526.111 Safari/537.36"
[“接受编码”]=> 字符串(19)“gzip、deflate、sdch”
[“接受语言”]=> 字符串(14)“en-US,en;q=0.8”[“Cookie”]=>
字符串(518) “切西斯=OhhBBhVodwwf7Tb55AVsU32ClMS5cgmxBl15WHA%2BrGnvo1kiK%2B67BWeAuJVSV2MY25zZd0riHC9cyx9fiigiBuqkPMT%2FKE9d6et%2FXaE3F7I59P9%2FEzy5byQ5nEkJq5xwXoH1I7% 2B7v62cQL21%2Bjfnk3AwIy4luM7N51IUuTqg7TxunoZFD1gJO84r8degY1imNpmDk2W%2FjsQPn9bQpkWJ9KVMxxViFDaELEU0rIfYmif%2BdvXjK9W%2Fj7iWQxZYE9ZGazgBTKlLO%2BJZH NdPrdmGPFTzTUROZdffpF%2Bb25bRMPEJsZ9CE2mdVuSn%2FEu678utd0lcd9bh%2BDbTDikrHP4jBFOLbZfWKT%2F9r5GkMBrLBl%2BlvPx9RbAq%2FIsjeA1V7c6JYf41TO1bG2XKT14QFHm8 m0qY8HCal%2B%2BR8tZe9i3zy24%3Dcfc459942e4ef82a5554257216a19d621f446a25" ["If-Modified-Since"]=> string(29) "1970 年 1 月 1 日星期四 00:00:00 GMT" }

{"response_code":200,"device_id":"70D0D01FBAD2","allowed_hours":null,"product":"mlc","prov_ur":null}

在我的回应中。我不想在 HTTP 标头响应中发送其他数据。

根据 CI 更新代码

public function index()
{
    $request = array(
        'request' => $this->get('request'),
        'device_id' => $this->get('device_id'),
        'launch_date'=> $this->get('launch_date'),
        'allowed_hours'=>$this->get('allowed_hours'),
        'site_id'=> $this->get('site_id'),
        'product'=>$this->get('product'),
        'software_version'=> $this->get('software_version'),
        'platform_os'=> $this->get('platform_os'),
        'platform'=> $this->get('platform'),
        'platform_model'=> $this->get('platform_model')
    );

    $response = array(
        'response_code' =>200 ,
        'device_id'=> $this->get('device_id'),
        'allowed_hours'=> $this->get('allowed_hours'),
        'product'=>'mlc',
        'prov_ur'=>NULL 
    );

    $this->output->set_content_type('Content-Type: application/json');

    return $this->output
    ->set_content_type('Content-Type: application/json')
    ->set_output(json_encode($response));

    echo $response;

}

问题是你的一些$_GET变量未设置,这将引发错误(您拥有的额外输出文本),并且可以通过在使用它们之前先检查它们是否为空来防止。

$request = array(
    'request' => !empty($_GET['request']) ? $_GET['request'] : '',
    'device_id' => !empty($_GET['device_id']) ? $_GET['device_id'] : '',
    'launch_date'=> !empty($_GET['launch_date']) ? $_GET['launch_date'] : '',
    'allowed_hours'=> !empty($_GET['allowed_hours']) ? $_GET['allowed_hours'] : '',
    'site_id'=> !empty($_GET['site_id']) ? $_GET['site_id'] : '',
    'product'=> !empty($_GET['product']) ? $_GET['product'] : '',
    'software_version'=> !empty($_GET['software_version']) ? $_GET['software_version'] : '',
    'platform_os'=> !empty($_GET['platform_os']) ? $_GET['platform_os'] : '',
    'platform'=> !empty($_GET['platform']) ? $_GET['platform'] : '',
    'platform_model'=> !empty($_GET['platform_model']) ? $_GET['platform_model'] : ''
);

$response = array(
    'response_code' =>200 ,
    'device_id'=> !empty($_GET['device_id']) ? $_GET['device_id'] : '',
    'allowed_hours'=> !empty($_GET['allowed_hours']) ? $_GET['allowed_hours'] : '',
    'product'=>'mlc',
    'prov_ur'=>NULL 
);

header('Content-Type: application/json');
echo json_encode( $response );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何发送自定义 HTTP 标头作为响应? 的相关文章

  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行

随机推荐