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

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

如何將 GET 請求重定向到帶有某些數(shù)據(jù)的 POST 請求?

如何將 GET 請求重定向到帶有某些數(shù)據(jù)的 POST 請求?

Go
暮色呼如 2023-05-04 17:01:49
當用戶使用 GET 請求訪問某個 URL 時,我想將他們重定向到另一個位置的 POST 請求。package mainimport (    "bytes"    "fmt"    "io/ioutil"    "log"    "net/http"    "net/url")func old(w http.ResponseWriter, r *http.Request) {    newURL := "/new"    var bdy = []byte(`title=Buy cheese and bread for breakfast.`)    r.Method = "POST"    r.URL, _ = url.Parse(newURL)    r.RequestURI = newURL    r.Body = ioutil.NopCloser(bytes.NewReader(bdy))    r.Header.Set("Content-Type", "application/x-www-form-urlencoded")    http.Redirect(w, r, newURL, 302)}func new(w http.ResponseWriter, r *http.Request) {    r.ParseForm()    fmt.Printf("Method:%v\n", r.Method)    fmt.Printf("Title:%v\n", r.Form.Get("title"))}func main() {    http.HandleFunc("/", old)    http.HandleFunc("/new", new)    port := 8000    fmt.Printf("listening on %v\n", port)    if err := http.ListenAndServe(fmt.Sprintf(":%v", port), nil); err != nil {        log.Fatal("ListenAndServe: ", err)    }}當我點擊“/”時,我最終被重定向到“/new”但是有一個 GET 請求并且沒有表單數(shù)據(jù):Method:GETTitle:如果我直接卷曲“/新”,我會得到:curl -XPOST localhost:8000/new -d "title=Buy cheese and bread for breakfast."Method:POSTTitle:Buy cheese and bread for breakfast.
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經(jīng)驗 獲得超9個贊

不幸的是,我不認為重定向可以更改動詞(例如,,GETPOST或向請求添加數(shù)據(jù)。它只能更改 URL。

查看完整回答
反對 回復 2023-05-04
?
瀟湘沐

TA貢獻1816條經(jīng)驗 獲得超6個贊

HTTP 重定向(即回復狀態(tài)碼 301、302、307,308 和Location標頭)只能將現(xiàn)有請求重定向到另一個位置,而不會更改請求的有效負載。不過,它可以在響應標頭中添加一些 cookie。

為了自動將 GET 請求更改為具有特定有效負載的 POST 請求,您可以嘗試向客戶端發(fā)送一個帶有<form method=POST...隱藏輸入字段的 HTML 頁面和有效負載,即<input name=... value=... type=hidden>然后將一些 JavaScript 添加到自動提交表單的頁面. 但是這種黑客攻擊只能在瀏覽器中運行,并且只有在啟用了 JavaScript 的情況下才能運行,并且也不適用于所有類型的有效負載。

為了與更廣泛的客戶端保持兼容性,最好以不同的方式設計它,即在重定向中保留 GET 請求,但將必要的有效負載作為參數(shù)提供給新目標,即http://new.target/foo?payload=..... 但細節(jié)取決于請求的目標可以處理什么。


查看完整回答
反對 回復 2023-05-04
?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

我從未聽說過將動詞從 GET 更改為 POST。我想這是不可能的,因為 POST 假定 body of body(但可能是空的)而 GET 則不然。所以在一般情況下,瀏覽器將無法從無到有地獲取正文。否則是可能的:您可以在 post 后發(fā)送 302 重定向以使瀏覽器執(zhí)行 get。動詞也可以與 307 回復代碼一起保留。

嘗試重新考慮瀏覽器與服務器的交互。也許您可以將 POST 重定向到另一個位置來解決任務?


查看完整回答
反對 回復 2023-05-04
  • 3 回答
  • 0 關(guān)注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號