2017-04-25 2 views
0

이 PUT 호출 (vb.net)을 수행 할 때 "400"오류가 발생합니다.CSRF 토큰이 필요한 유효한 PUT 나머지 호출을 작성하는 방법

내가 뭘 잘못하고 있니?

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

답변

0

X-CSRF 토큰이 누락되었다 던져.

  1. GET을 수행하고 응답에서 CSRF 토큰을 저장하십시오.

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

    If(not String.IsNullOrWhiteSpace(_csrfToken)) 
        wRequest.Headers("X-CSRF-Token") = _csrfToken 
    End If 
    

전에 PUT 요청을 할 수있는 토큰을 추가 참고 : X-CSRF 토큰 세션의 수명을 가지고있다.

관련 문제