部署的时候,是否可以修改或去除响应标头Server的值为wrokerman

fanyin

部署的时候,是否可以修改或去除响应标头Server的值

在部署到服务器的时候,通常不想让别人知道后端程序采用什么语言开发的,因此请问大家,是否支持去除响应标头的Server值,比如TP框架的部署到服务器上是显示Apache或者Nginx. 那么webman开发的还是显示workerman,是否有方法可以去除或修改。
如果所示:
响应标头图示

505 2 4
2个回答

charlescc

加个中间件就行了。 看源码是判断有没有设置header,没有header server 就会拼上这个

class ApiFormat implements MiddlewareInterface
{

    public function process(Request $request, callable $handler): Response
    {
        /**
         * @var Response $response
         */
        $response = $handler($request);
        $response->header('Server','charles');
        return $response;
    }
}

然后就会

  • fanyin 2023-12-30

    感谢,这方法管用!这样就不必破坏源代码了

  • meows 2023-12-31

    真机智

efnic

修改根目录下的/support/Response.php

<?php

namespace support;

/**
 * Class Response
 * @package support
 * @link https://www.workerman.net/doc/webman/response.html
 */
class Response extends \Webman\Http\Response
{
    public function __construct($status = 200, $headers = array(), $body = '')
    {
        $headers['Server'] = 'nginx';
        parent::__construct($status, $headers, $body);
    }
}
🔝