修复重定向没有按照RFC7231规范跳转的问题,修改为除了307外重定向使用GET方式

This commit is contained in:
Looly
2024-09-06 17:13:49 +08:00
parent cefc0fd559
commit b7ad1e82d1
3 changed files with 7 additions and 21 deletions

View File

@@ -100,11 +100,6 @@ public class HttpConfig {
* @since 5.8.33
*/
boolean useDefaultContentTypeIfNull = true;
/**
* 当重定向时是否使用Get方式发送请求<br>
* issue#3722 部分请求要求重定向时必须使用Get方式发送请求
*/
boolean useGetIfRedirect;
/**
* 设置超时,单位:毫秒<br>
@@ -337,16 +332,4 @@ public class HttpConfig {
this.useDefaultContentTypeIfNull = useDefaultContentTypeIfNull;
return this;
}
/**
* 重定向时是否使用GET方式
*
* @param useGetIfRedirect 重定向时是否使用GET方式
* @return this
* @since 5.8.33
*/
public HttpConfig setUseGetIfRedirect(boolean useGetIfRedirect) {
this.useGetIfRedirect = useGetIfRedirect;
return this;
}
}

View File

@@ -1313,9 +1313,12 @@ public class HttpRequest extends HttpBase<HttpRequest> {
redirectUrl = UrlBuilder.ofHttpWithoutEncode(location);
}
setUrl(redirectUrl);
if(config.useGetIfRedirect){
// since 5.8.33, issue#3722
setMethod(Method.GET);
// https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7
// https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections
// 307方法和消息主体都不发生变化。
if (HttpStatus.HTTP_TEMP_REDIRECT != responseCode) {
// 重定向默认使用GET
method(Method.GET);
}
if (redirectCount < config.maxRedirectCount) {
redirectCount++;