防止 axios/fetch 重定向

Posted

技术标签:

【中文标题】防止 axios/fetch 重定向【英文标题】:Prevent axios/fetch redirection 【发布时间】:2018-01-27 03:37:06 【问题描述】:

我的应用程序有一个小问题: 我必须在一个 url 的响应中得到一些 cookie,其中一个是通过向另一个 url 发出请求来获得的。请求已完成,但我无法获取 cookie,因为当我获得请求的结果时,我会被重定向到站点/站点。 所以我的问题是:有没有办法授权第一次重定向,而不是第二次?

我知道我正在使用 react-native,而 axios 解决方案 maxRedirects: 1 在我的情况下不起作用。 fetch 中的redirect: 'manual' 也是如此。

请求代码:

fetch(
                    'https://gitlab.blablabla.fr/users/auth/ldapmain/callback' ,
                    
                        method: 'POST',
                        headers: 
                            'Content-Type': 'application/x-www-form-urlencoded',
                            'accept-charset':'utf-8',
                        ,
                        body: querystring.stringify(
                            authenticity_token: this.state.token,
                            username: this.state.username,
                            password: this.state.password,
                        ),
                        redirect: 'manual',
                        credentials: 'include',
                        withCredentials: 'true',

                    
                ).then( (responseData2) => 
                        console.log(this.state.username +"/"+ this.state.password+ "/"+this.state.token + "/"+ this.state.utf8);
                        console.log(responseData2);


                    )

以及显示的响应:

Response 
  type: 'default',
  status: 200,
  ok: true,
  statusText: undefined,
  headers: 
   Headers 
     map: 
       'x-version-id': [Object],
        server: [Object],
        'cache-control': [Object],
        date: [Object],
        'content-type': [Object],
        'content-length': [Object],
        'content-security-policy': [Object],
        'accept-ranges': [Object],
        'x-request-id': [Object],
        'last-modified': [Object],
        'x-frame-options': [Object]  ,
  url: 'https://mattermost.blablabla.fr/',
  _bodyInit: '<!DOCTYPE html> <html> the html code</html> ',
  _bodyText: '<!DOCTYPE html> <html> the html code</html> ' 

【问题讨论】:

您找到解决方案了吗?有一个非常相似的问题。 嗨,我没有找到任何解决方案,但我通过使用 Cookies 代替它。 :/希望它会有所帮助 【参考方案1】:

这是我的代码,我可以解决,防止获取重定向。

import 'whatwg-fetch';
fetch('/api/user/get_user_profile', 
     
        method: 'GET',
        headers:  'Content-Type': 'application/json' ,
        data: JSON.stringify(
            sHash: sHash
        ),
        redirect: 'manual',
    
)

这是后端代码

res.status(200);
res.send(content);
return;

enter image description here

【讨论】:

HTTP 状态 200 不是“重定向”类型的一部分,3** 是。

以上是关于防止 axios/fetch 重定向的主要内容,如果未能解决你的问题,请参考以下文章

防止 Xmlhttprequest 的重定向

使用哈希标签时防止页面重定向

防止开放重定向,恶意篡改returnUrl

Woocommerce 分页 - 防止第 1 页上的 301 重定向

使用 URL 重定向站点防止 Telegram 链接预览

如何防止 Python 的 urllib(2) 跟随重定向