C# 如何使用.Net从客户端获取/提供REST调用中的CSRF令牌?

C# 如何使用.Net从客户端获取/提供REST调用中的CSRF令牌?,c#,.net,rest,csrf,C#,.net,Rest,Csrf,我正在尝试进行REST调用(调用sapnetweaverapi方法)。 API要求在调用时发送CSRF令牌 当手动使用REST客户端时,我可以发送一个获取令牌的请求(使用一个HTTP get,其中包含头“X-CSRF-token:Fetch”,另一个包含用于基本身份验证的编码凭据(“授权:基本”)。 响应包含一个带有CSRF令牌的标头。 在第二个调用中,我在标题“X-CSRF-token:中提供了令牌,并提供了相同的编码凭证。 第二次调用成功,我得到了rest调用的结果 现在,我想以编程方式调用

我正在尝试进行
REST
调用(调用
sapnetweaverapi
方法)。 API要求在调用时发送CSRF令牌

当手动使用REST客户端时,我可以发送一个获取令牌的请求(使用一个HTTP get,其中包含头
“X-CSRF-token:Fetch”
,另一个包含用于基本身份验证的编码凭据(“授权:基本”)。 响应包含一个带有CSRF令牌的标头。 在第二个调用中,我在标题
“X-CSRF-token:
中提供了令牌,并提供了相同的编码凭证。 第二次调用成功,我得到了rest调用的结果

现在,我想以编程方式调用相同的API

  • 我是否需要执行此往返以获取令牌,或者是否有自动执行的方法
  • 如果是,我如何检测必须获取和发送令牌?(服务器端是否启用了AntiForgeryToken处理?)
  • 如何实际获取令牌并将其添加到REST调用
  • 有什么建议吗?

    当您使用令牌(JWT/CSRF令牌)时,您需要在第一时间从响应头中读取。然后您可以使用SessionStorage来存储它。在向API发出任何请求之前,您需要手动将JWT/CSRF令牌添加到Http头中。在angular中,您可以使用Http拦截器,在1个位置添加逻辑。因此,当您使用令牌时,不需要在多个位置添加/检索(JWT/CSRF令牌),您需要在第一时间从响应头读取。然后您可以使用SessionStorage来存储它。在向API发出任何请求之前,您需要手动将JWT/CSRF令牌添加到Http头。在angular中,您可以使用Http拦截器,在1个位置添加逻辑。因此,您不需要在多个位置添加/检索