如何通过react js向SAP服务器发送和接收cookie?

时间:2020-10-28 13:05:51

标签: reactjs postman setcookie http-proxy-middleware

让我尝试解释一下我目前的情况:

我必须从SAP消费一个api剩余部分,我需要获得一个令牌和一个X-CSRF-Token,它们都工作良好,我从SAP那里获得了它们和会话cookie,直到现在一切正常。要使用api rest,我必须通过标头发送令牌和会话cookie。

问题在于浏览器会阻止cookie,因为它们无法满足某些条件,例如:

  • 此设置的cookie被阻止,因为它具有安全属性,但未通过安全连接接收
  • 此设置的Cookie被阻止,因为其域属性对问候无效

起初,我无法连接到SAP,从而导致Same Origin的CORS策略,我已经使用http-proxy-middleware解决了该问题,我通过axios进行了调用(我已激活withCredentials:true,让它知道我需要曲奇饼干) 。但是现在问题似乎仍然是cookie,因为调用api后收到的结果是403 Forbidden。

我已经由邮递员进行了测试,并且一切正常,我可以将令牌作为cookie并使用SAP的服务,问题出在客户端(浏览器)。

此外,我无权访问后端来配置cors和cookie,因此后端所提供的解决方案不是我想要的。此外,通过node.js构建代理服务器是我的最后选择,在此之前,我想知道是否只能由客户端控制这种情况,为此我使用了React JS。

这是我的条件代码的一部分:

代理

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function(app) {
    app.use("/oauth2/token",
        createProxyMiddleware( {
            target: "https://sapConnectionOauth.com",
            changeOrigin: true,
            secure:true,
            cookieDomainRewrite: {
                "*": "sapConnectionOauth.com"
            }
        })
    );
    app.use("/http/serviceIWannaUse",
        createProxyMiddleware( {
            target: "https://sapConnection.com",
            changeOrigin: true,
            secure:true,
            cookieDomainRewrite: {
                "*": "sapConnection.com" 
            }
        })
    );
};

我要使用的服务

export const serviceIWannaUse = async (token, xcsrf) => {
    console.log('entra a serviceIWannaUse')

    let config= {
        url:
            "/http/serviceIWannaUse",
        method: "POST",
        withCredentials: true,
        headers: {
            Accept: "application/json",
            "Content-Type": "application/json",
            "X-CSRF-Token": xcsrf,
            Authorization: `Bearer ${token}`,
        },
    };
    return await axios(config)
};

这是setCookies如何在浏览器中显示的示例图像(不是我的)

enter image description here

我也一直在修改cookie的google标志,但是它没有用。链接仅是:chrome:// flags /

如果有人可以帮助我,我将非常感激。

0 个答案:

没有答案
相关问题