对于报告,我的应用程序通过URI传输数据,在某些情况下,它会使URI非常长(GET请求)(例如:~15.000个字符编码)。
在这种情况下,我使用差异代理测试如下:
- (1)在GKE中使用
nginx-ingress
:客户端没有收到来自web服务器的响应,在nginx-ingress
中也没有找到日志(添加了注解:nginx.ingress.kubernetes.io/large-client-header-buffers: "4 16k"
和nginx.ingress.kubernetes.io/client-body-buffer-size: "5m"
) - (2)在VM上运行
nginx
:OK(在配置中添加:large_client_header_buffers 4 16k;
个
因为在nginx-ingress
服务中没有日志信息,我认为连接可能在到达nginx-ingress
之前被Google防火墙或其他东西丢弃。
在这种情况下,我如何进行调试以找到问题?GKE中是否有关于URL长度的文档?
1条答案
按热度按时间dvtswwa31#
您正在使用15000个字符,由于此GET请求无法命中日志,因此字符数非常大。根据Google Cloud官方文档,
URL有**实际长度限制,通常在2k到8 k之间。**某些浏览器和代理服务器强制执行。如果您的API使用URL超过长度限制的GET请求,则此类请求可能会被浏览器拒绝。为了绕过限制,客户端代码应该使用一个POST请求,其Content-Type为application/x-www-form-urlencoded沿着HTTP头X-HTTP-Method-Override:GET。这种方法也适用于DELETE请求。
字符串