在 Post 请求后从 localhost:8080 重定向到 localhost:3000

Redirect from localhost:8080 to localhost:3000 after Post request

我正在尝试制作一个表单向我的后端提交 post 请求以使用 Facebook 进行用户身份验证,我被重定向到 facebook 并登录到 facebook。我已成功验证并返回了用户对象(在我的后端中配置)。我的后端 Facebook 身份验证是按照 spring social tutorial 完成的,我还遵循了 Geoffroy 的 spring 社交登录教程:geowarin.GitHub 点 io/social-login-with-spring.html。我的前端 React.Js 代码(在 localhost:3000 上运行)看起来像:

const auth_url = "/connect/facebook";
<form className="signin__form" action={auth_url} method="post">
    <input type="hidden" name="scope" value="user_friends" />
    <button type="submit" className="signin__form-btn">
    SIGN IN WITH FACEBOOK
    </button>
</form>

我的 package.json 代理 connect/facebook 对 localhost:8080 的响应,看起来像:

{
...
"proxy": {
    "/connect": {
      "target": "http://localhost:8080",
      "secure": false,
      "changeOrigin": true
    }
  },
...
}

我希望看到的:

在 localhost:3000

{React view components}

我看到的: 在 localhost:8080

{
  user: info
}

我的问题是如何在后端重定向完成后返回到 localhost:3000,我是否应该在后端创建另一个方法以便在前端创建 ajax 获取请求获取用户信息而不是发送回 JSON 对象。我不确定 spring.social 握手完成后如何重定向回 3000。

实际上你可以改变你的控制器

header 在客户端重定向

@RequestMapping(value = "/auth_url", method = RequestMethod.POST)
public void login(HttpServletResponse response) {
    response.setHeader("Location", "http://localhost:3000");
}

或 return 从控制器 URL 重定向

@RequestMapping(value = "/auth_url", method = RequestMethod.POST)
public ModelAndView login() {
        return new ModelAndView("redirect:http://localhost:3000");
}

或者我建议通过 AJAX 提交表单并在不离开 localhost:3000

的情况下处理 onSuccess