首页 > 解决方案 > 可以将 POST 请求重定向为另一个 GET 请求吗

问题描述

我正在开发一个反应应用程序,由于机密性,需要在主体内发送对象参数。所以我像这样从反应应用程序客户端向后端服务器发出 POST 请求

axios
  .post('htps://java.backend.xyz/path1', {
    data: password,
  })
  .catch(function (error) {
    handle(error);
  });

发出此 POST 请求后,有一个带有“method = OPTIONS”和“URL='htps://java.backend.xyz/path1'”的预检请求... java-backend-server 以 status_code=200 响应该请求。

在上述预检请求之后,java-backend-server 处理 POST 请求,而不是发送响应,java-backend-server 使用 GET 请求(即重定向)进行响应,例如:

https://express-app.xyz/path2?query_para1=abc&query_param2=123, requestMethod=GET

并且响应上面的 GET 请求,express 应用程序以 status_code=200 响应

但是在这个 GET 请求之后,有一个带有 request Method=OPTIONS 并且具有与上面相同的 URL 的预检请求,即

https://express-app.xyz/path2?query_para1=abc&query_param2=123, requestMethod=OPTIONS

对于上面的 OPTIONS 请求,快递服务器以 status_code=204 响应,这意味着客户端不需要离开其当前页面...这是禁止我的应用程序进行最终重定向的原因,即在后端服务器响应之后使用 GET 请求,即使搜索引擎没有更新重定向 URL,我的反应应用程序也无法进行重定向

https://express-app.xyz/path2?query_para1=abc&query_param2=123

那么,这甚至可能吗?我假设 GET 请求之后的预检请求禁止客户端进行最终重定向。有人可以帮我解决这个问题吗

标签: reactjsexpresshttppreflighthttp-status-code-204

解决方案


我不确定我是否正确理解了您的问题,但您可以做的是发送一个帖子响应,该响应将指示客户端重定向到特定位置。这可以通过发送带有状态码 302 的响应和标头中的位置 (location:redirect_url) 来实现

欲了解更多信息:- https://en.m.wikipedia.org/wiki/HTTP_302


推荐阅读