我正在使用访问管理(AM)服务器创建社交登录页面。当用户单击登录按钮时,我将对AM服务器进行一次http调用。AM服务器生成带有身份验证cookie的HTTP 301重定向响应到社交登录页面。我需要以某种方式遵循此重定向响应,并在Web浏览器中显示新内容。
用户界面:ReactJS
请求:
POST /api/auth/socialauth/initiate HTTP/1.1 Host example.com User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Accept */* Accept-Language en-US,en;q=0.5 Accept-Encoding gzip, deflate origin http://web.example.com:8080 Referer http://web.example.com:8080/myapp/login Cookie authId=...; NTID=...
响应
HTTP/1.1 307 Temporary Redirect https://www.facebook.com/dialog/oauth?client_id=...&scope=public_profile%2Cemail&redirect_uri=http%3A%2F%2Fam.example.com%3A8083%2Fopenam%2Foauth2c%2FOAuthProxy.jsp&response_type=code&state=qtrwtidnwdpbft4ctj2e9mv3mjkifqo
反应代码:
initiateSocialLogin() { var url = "/api/auth/socialauth/initiate"; fetch(url, { method: 'POST' }) .then(response => { // HTTP 301 response // HOW CAN I FOLLOW THE HTTP REDIRECT RESPONSE? }) .catch(function(err) { console.info(err + " url: " + url); }); }
如何跟踪重定向响应并在Web浏览器中显示新内容?
Request.redirect可能是"follow","error"或"manual"。
"follow"
"error"
"manual"
如果为“ follow”,则fetch()API遵循重定向响应(HTTP状态码= 301,302,303,307,308)。 如果为“错误”,则fetch()API会将重定向响应视为错误。 如果它是“ manual”,则fetch()API不会遵循重定向,并返回一个不透明重定向过滤的响应,该响应包装了重定向响应。
如果为“ follow”,则fetch()API遵循重定向响应(HTTP状态码= 301,302,303,307,308)。
如果为“错误”,则fetch()API会将重定向响应视为错误。
如果它是“ manual”,则fetch()API不会遵循重定向,并返回一个不透明重定向过滤的响应,该响应包装了重定向响应。
由于您要在提取后重定向,因此只需将其用作
fetch(url, { method: 'POST', redirect: 'follow'}) .then(response => { // HTTP 301 response }) .catch(function(err) { console.info(err + " url: " + url); });