java可不可以重定向post请求
时间: 2023-08-29 20:10:32 浏览: 45
回答: 根据引用\[2\]的解释,对于简单请求并且没有任何预检请求的情况下,浏览器会一直跟随重定向,直到最后一个请求返回或者中间请求的CORS验证失败。所以,Java可以重定向POST请求。
#### 引用[.reference_title]
- *1* *2* *3* [重定向 CORS 跨域请求](https://blog.csdn.net/weixin_30338049/article/details/114726737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
java post重定向_java实现响应重定向发送post请求操作示例
好的,我知道你的问题了。关于Java实现响应重定向并发送POST请求的操作示例,可以参考以下代码:
```java
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class RedirectAndPost {
public static void main(String[] args) throws Exception {
String url = "http://www.example.com/redirect";
String postBody = "param1=value1¶m2=value2";
HttpURLConnection connection = null;
URL redirectUrl = new URL(url);
while (true) {
connection = (HttpURLConnection) redirectUrl.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", Integer.toString(postBody.getBytes().length));
connection.setUseCaches(false);
connection.setDoOutput(true);
OutputStream outputStream = connection.getOutputStream();
outputStream.write(postBody.getBytes("UTF-8"));
outputStream.flush();
outputStream.close();
int statusCode = connection.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_MOVED_TEMP || statusCode == HttpURLConnection.HTTP_MOVED_PERM || statusCode == HttpURLConnection.HTTP_SEE_OTHER) {
String redirectLocation = connection.getHeaderField("Location");
redirectUrl = new URL(redirectLocation);
continue;
} else {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String line = null;
StringBuilder responseBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
responseBuilder.append(line);
}
reader.close();
String response = responseBuilder.toString();
System.out.println(response);
break;
}
}
}
}
```
这个示例代码实现了向一个URL发送POST请求,并在接收到重定向响应时自动跟随重定向并重新发送POST请求。注意,我们在第一次请求时将`setInstanceFollowRedirects`方法设置为`false`,以便我们能够手动处理重定向响应。当我们接收到重定向响应时,从响应头中获取重定向URL,并将其存储在`redirectUrl`变量中,然后继续重新发送POST请求,直到我们接收到最终响应为止。
java请求转发和重定向
Java中的请求转发和重定向都是用于在不同的Servlet之间进行页面跳转的方式,但它们的实现方式和效果是不同的。
请求转发是指在当前Servlet中处理完请求后,将请求转发给另一个Servlet进行处理,转发后的请求由另一个Servlet来产生响应。请求转发的代码如下:
```java
RequestDispatcher dispatcher = request.getRequestDispatcher("/b");
dispatcher.forward(request, response);
```
其中,`/b`是要转发到的Servlet的路径,`request`和`response`是当前Servlet的请求和响应对象,转发后的请求和响应对象也是这两个对象。
请求转发的特点是:转发后的请求和响应对象与原始请求和响应对象是同一个,因此它们可以共享请求和响应的信息,比如请求参数、请求属性等。此外,请求转发是在服务器端完成的,客户端并不知道发生了转发,因此地址栏中的URL不会改变。
重定向是指在当前Servlet中处理完请求后,将请求重定向到另一个Servlet进行处理,重定向后的请求由浏览器重新发起,由另一个Servlet来产生响应。重定向的代码如下:
```java
response.sendRedirect("/b");
```
其中,`/b`是要重定向到的Servlet的路径,`response`是当前Servlet的响应对象。
重定向的特点是:重定向后的请求和响应对象与原始请求和响应对象是不同的,因此它们不能共享请求和响应的信息。此外,重定向是在客户端完成的,因此地址栏中的URL会改变。