Stream Load no valid Basic authorization

【详述】
在Stream Load时,同一个用户,访问FE节点时,鉴权失败(提示’no valid Basic authorization’),但是BE节点时正常。
想咨询下是请求方式有误、StarRocks配置有误,或者其他原因?

向FE节点(HttpPort: 8030)提交请求及结果

想BE节点(HttpPort: 8040)提交请求及结果

【导入/导出方式】
Stream Load
【StarRocks版本】2.2.1

1赞

您是什么版本呀?

StarRocks version 2.2.1

总感觉你的stream load写的不规范。https://docs.starrocks.com/zh-cn/main/loading/StreamLoad 参照这个连接再改一下吧

感谢,那再咨询下,我们是否有针对数据流的官方规范样例么?链接里的例子都是针对文件。

原因:
向FE节点发送的Stream Load请求会被FE节点重定向到某个BE节点执行,重定向过程中请求头里的Authorization字段会被去除(by design),从而导致认证失败。

解决方式:

  1. 拦截重定向后的destination URL
  2. 向上述URL发送带有Authorization请求头的请求
1赞

请问有具体如何配置(设置)的步骤么?我现在3.1RC1版本也遇到过同样问题,发FE,说no valid Basic authorization,发BE,数据成功插入

@U_1686558334218_3654不是配置的问题。而是向FE发送HTTP请求时要手动拦截重定向,然后向上述的URL再次发送请求,请求头和初始配置相同即可。

curl --location-trusted 请确认下写法正确不

您好,我遇见了一个奇怪的问题,请指教,
问题 :在使用streamload导入数据的时候,我使用的模拟csv字符串使用httpClient请求api:http://ip:port/api/db/table/_stream_load
当ip和port(8030)是FE的时候总是出现一次成功一次失败(必现),失败的信息Bad Request.
text is empty (possibly HTTP/0.9);如果我把ip和port使用指定BE的时候port(8040)是可以正常执行的;
环境 :java1.8,starrocks:2.5.14,httpClient4.5.13
关键代码

HttpPut put = new HttpPut(loadUrl);
        StringEntity entity = new StringEntity(content, StandardCharsets.UTF_8);

        put.setHeader(HttpHeaders.EXPECT, "100-continue");
        put.setHeader(HttpHeaders.AUTHORIZATION, basicAuthHeader(starrocksUser, starrocksPassword));
        put.setHeader("column_separator", ",");
        put.setHeader("label", label);
        put.setEntity(entity);

确实这个原因,改成BE就正常提交了。解决方式: 拦截重定向后的destination URL 向上述URL发送带有Authorization请求头的请求,这个具体是怎么操作呢