亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

后操作失敗并出現“CSRF 令牌驗證失敗”錯誤

后操作失敗并出現“CSRF 令牌驗證失敗”錯誤

Go
慕尼黑的夜晚無繁華 2023-04-17 16:45:50
我正在嘗試對 SAP Hybris C4C 實體執行 POST 操作。我發現很多博客都提到我們需要在 POST 期間發送 X-CSRF-Token,它可以首先使用 GET 操作檢索。我使用 Postman 成功地做到了這一點。因為 Postman 存儲 cookie 不會導致 CSRF 令牌驗證失敗。但是,我實際上想用 golang 來調用它。而且我每次都收到錯誤,因為“CSRF 令牌驗證失敗”。然后在瀏覽了很多博客之后,我發現我們不僅要設置 X-CSRF-Token,還要設置 Cookie,這樣 HTTP POST 就不會被視為新會話。否則我們發送的 csrf 令牌與當前會話不匹配導致錯誤。即使在遵循以上兩條線索之后,我仍然遇到錯誤。下面是代碼片段,我不確定還缺少什么。代碼片段:auth := "******:*****"basicAuth := base64.StdEncoding.EncodeToString([]byte(auth))geturl := "https://******.crm.ondemand.com/sap/c4c/odata/v1/c4codataapi"req, _ := http.NewRequest("GET", geturl, nil)req.Header.Set("Authorization", "Basic "+basicAuth)req.Header.Set("X-Csrf-Token", "Fetch")cli := &http.Client{}res, _ := cli.Do(req)inputMap := make(map[string]interface{})inputMap["PriorityCodeText"] = "Normal"inputJSON, _ := json.Marshal(inputMap)url := "https://*******.crm.ondemand.com/sap/c4c/odata/v1/c4codataapi/OpportunityCollection"request, _ := http.NewRequest("POST", url, bytes.NewBuffer(inputJSON))request.Header.Set("Authorization", "Basic "+basicAuth)request.Header.Set("X-Csrf-Token", res.Header.Get("X-Csrf-Token"))request.Header.Set("Cookie", res.Header.Get("Set-Cookie"))request.Header.Set("X-Requested-With", "XMLHttpRequest")request.Header.Set("Content-Type", "application/atomsvc+xml")request.Header.Set("DataServiceVersion", "2.0")//request.Header.Set("Accept", "application/atom+xml")client := &http.Client{}resp, _ := client.Do(request)fmt.Printf("Response status code is: %d", resp.StatusCode)jsonResponseData, _ := ioutil.ReadAll(resp.Body)fmt.Printf("Response is: %s", jsonResponseData)
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

有效!我必須復制所有 cookie 而不是僅僅設置標頭。我做了以下代碼片段的更改


//request.Header.Set("Cookie", res.Header.Get("Set-Cookie"))

for i := 0; i < len(res.Cookies()); i++ {

? ? request.AddCookie(res.Cookies()[i])

}


查看完整回答
反對 回復 2023-04-17
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

我有時會面對 tomcat 9,就我而言,只需注銷并重新登錄即可解決問題。
似乎 java 應用程序使用了過期的 cookie,但沒有錯誤地將我重定向到注銷頁面。

查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 559 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號