第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 Nosurf 和 A??ppengine Blobstore 時的 HTTP 400

使用 Nosurf 和 A??ppengine Blobstore 時的 HTTP 400

Go
開滿天機 2021-09-13 15:09:11
我正在使用 Appengine Blob 商店示例,它工作正常(我修改為采用兩個文件,但這不是問題)。但是,當我打開nosurf 時,它會給我一個HTTP 400. 我正在將 csrf 令牌傳遞給我的表單。即使我只上傳一個文件,問題仍然存在。nosurf 適用于其他形式,但只會給我?guī)?blobstore 文件上傳的麻煩。由于代碼很大(這只是一些小調整的例子),我把它放在這里:http : //play.golang.org/p/SJADmn-WvJ(當然你不能在那里運行它,因為你需要應用引擎和 nosurf)代碼的小部分:const rootTemplateHTML = `<html><body><form action="{{.UpUrl}}" method="POST" enctype="multipart/form-data">    Upload File: <input type="file" name="file1"><br>    Upload File: <input type="file" name="file2"><br>    <input type="hidden" name="csrf_token" value="{{ .Token }}">    <input type="submit" name="submit" value="Submit"></form></body></html>`這不起作用:    http.Handle("/", nosurf.New(http.HandlerFunc(handleRoot)))    http.Handle("/upload", nosurf.New(http.HandlerFunc(handleUpload)))    http.HandleFunc("/serve/", handleServe)但這有效(無400狀態(tài)):    http.HandleFunc("/", handleRoot)    http.HandleFunc("/serve/", handleServe)    http.HandleFunc("/upload", handleUpload)這是與nosurf還是有關app-engine?關于我應該怎么做來解決這個問題的任何建議?
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

blobstore 上傳 URL 的工作原理是將您的文件上傳實際發(fā)布到/_ah/...您的應用程序上的特殊路由,該路由實際上并不由您的應用程序處理,而是用作基礎設施將數據發(fā)送到存儲上傳處理程序的信號,這是一個執(zhí)行實際放入存儲的內部處理程序。

您傳遞給生成上傳 URL 的函數的回調路由是應用程序上的路由,該路由完成后將接收請求,該請求不包含文件數據,但包含文件元數據(例如文件名)以及任何其他傳遞的參數到請求(例如,重要的是 CSRF 令牌)。

但是,您傳遞的令牌是通過調用 生成的nosurf.Token(r),其中r用戶瀏覽器在生成頁面時向您的應用程序發(fā)出的請求。當存儲上傳處理程序向您的/upload路由發(fā)送回調請求時,nosurf 期望發(fā)送請求的客戶端為該客戶端(存儲上傳處理程序)生成有效的 CSRF 令牌,并根據該期望驗證該請求。相反,它接收為您最初發(fā)送給用戶的頁面生成的 CSRF 令牌,其中包含表單。


查看完整回答
反對 回復 2021-09-13
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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