laruence/yar

Header头Hostname传递非法字符串导致Go-Yar服务返回400错误

flyhope opened this issue · 2 comments

环境

  • 操作系统:CentOS 7.6
  • Docker容器操作系统:CentOS8/7
  • PHP版本:7.4.1/7.1.33
  • Yar版本:2.0.7

问题描述

通过该开源项目,搭建了GO-Yar服务

https://github.com/weixinhost/yar.go

然后,PHP使用Yar扩展调用时,报错

Fatal error: Uncaught Yar_Client_Transport_Exception: server responsed non-200 code '400'

通过DLV调试Go代码,发现PHP的Yar扩展Client发送了一个Hostname的Header,Val不符合规范,导致报错

image

修正建议

PHP Yar扩展Client不要发送Hostname header或者发送合法字符。

PHP Client示例代码

<?php
    $uri = 'http://127.0.0.1:8080/';

    $client = new Yar_Client($uri);
    $client->SetOpt(YAR_OPT_PACKAGER, "json");
    $result = $client->echo();
    var_dump($result);

过春节,没看到, 应该已经修复了, 你可以试用下master最新代码

yar-2.1.0发布中已经包含此修复