重定向从本地:8080到本地主机:3000请求后
问题描述:
我想做一个表单提交到我的后端用户认证Facebook的后端请求,我重定向到Facebook和我登录到Facebook。我已成功验证,并且返回了用户对象(在后端配置)。我的后端Facebook验证是在spring social tutorial之后完成的,我也遵循了Geoffroy的春季社交登录教程:geowarin.GitHub dot io/social-login-with-spring.html。我的前端React.Js代码(运行在localhost:3000)是这样的:重定向从本地:8080到本地主机: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代理的连接/ Facebook的响应为localhost:8080,看起来像:
{
...
"proxy": {
"/connect": {
"target": "http://localhost:8080",
"secure": false,
"changeOrigin": true
}
},
...
}
我期望看到:
在localhost:3000
{React view components}
我看到: 上本地主机:8080
{
user: info
}
我的问题是我怎么能回去为localhost:3000后端重定向后的成品,我应该在后端的另一种方法,所以我可以做一个Ajax获得前端的请求获取用户信息而不是发回JSON对象。在spring.social握手完成后,我不确定如何将其重定向回3000。
答
其实你可以改变你的控制器
头在客户端
@RequestMapping(value = "/auth_url", method = RequestMethod.POST)
public void login(HttpServletResponse response) {
response.setHeader("Location", "http://localhost:3000");
}
重定向或从控制器返回重定向URL
@RequestMapping(value = "/auth_url", method = RequestMethod.POST)
public ModelAndView login() {
return new ModelAndView("redirect:http://localhost:3000");
}
另外我建议你通过AJAX提交表单并在不离开本地主机的情况下处理onSuccess:3000
Hello,th要求答复!我尝试使用fetch和axios库做一个AJAX post请求,但他们都不喜欢我发送到Facebook进行后端auth控制器身份验证时获得的302重定向响应。有没有办法等待重定向完成,然后接收响应? –