如何构建需要CSRF令牌的有效PUT休息调用

时间:2017-04-25 19:34:02

标签: vb.net rest put

当我执行此PUT调用(vb.net)时,我收到“400”错误。

我做错了什么?

  Dim wRequest As HttpWebRequest = DirectCast(HttpWebRequest.Create("https://localhost:8444/api/route/1802/state"), HttpWebRequest) 
  wRequest.Method = "PUT"
  wRequest.ContentType = "text/plain"
  Dim stringData As String = "STOP"
  Dim data = Encoding.ASCII.GetBytes(stringData)
  wRequest.ContentLength = data.Length
  Dim newStream = wRequest.GetRequestStream()
  newStream.Write(data, 0, data.Length)
  newStream.Close()
  wResponse = DirectCast(wRequest.GetResponse(), HttpWebResponse)

最后一行抛出400。

this call doc

1 个答案:

答案 0 :(得分:0)

X-CSRF-Token丢失了。

  1. 执行GET并存储响应中的CSRF令牌。

    If(String.IsNullOrWhiteSpace(_csrfToken))
        _csrfToken = wResponse.Headers("X-CSRF-Token")
    End If
    
  2. 在" GetResponse"

    之前将令牌添加到PUT请求
    If(not String.IsNullOrWhiteSpace(_csrfToken))
        wRequest.Headers("X-CSRF-Token") = _csrfToken
    End If
    
  3. 注意:X-CSRF-Token具有会话的生命周期。