我有一个要求,当代理响应错误代码为401 (条件#1),响应主体有文本"No令牌“(条件#2)时,我需要拦截它并重定向到刷新令牌API。
在只考虑错误代码401的情况下,我可以部分地这样做。无法找到读取响应正文文本以给出条件#2的方法
location /service {
proxy_intercept_errors on;
error_page 401 = @refresh;
}
location @refresh {
(# Here check if the response body has text "No SAML Token". If yes return 401 directly.)
set $original_uri $scheme://$http_host$request_uri;
return 307 https://localhost:8083/service/auth/refresh?uri=$original_uri;
}请帮我得到回复正文的短信。提前感谢!
发布于 2020-07-14 13:27:54
从Nginx论坛得到了答案。
“没有办法。错误是根据响应头拦截的,如果错误被截获,响应体也不会从上游服务器读取。如果需要分析响应体,请考虑使用njs。执行适当的子请求并对其进行检查可能对您有用,详细信息请参阅这里: 。
https://stackoverflow.com/questions/62889205
复制相似问题