簡體   English   中英

Javascript Cloudflare輔助腳本不允許發布請求

[英]Javascript Cloudflare worker script not allowing post requests

因此,我正在測試cloudflare網絡工作者腳本,但似乎無法使我的代碼與POST請求等一起使用。

url_without_query_strings = request.url.split('?')[0] //remove all query strings

    const response = await fetch(url_without_query_strings, {
      method: request.method,
      headers: request.headers
    })
    return response

誰能看到我在做什么錯?

問題在於您僅從請求中復制methodheaders ,但它具有更多的屬性。 例如,POST請求具有不復制您代碼的body屬性。

為了執行從URL繼承原始請求中所有內容的提取,請執行以下操作:

const response = await fetch(url_without_query_strings, request)

也就是說,將request本身作為第二個參數而不是dict傳遞。 這是有效的,因為請求對象的屬性名稱與fetch()第二個參數期望的所有選項完全匹配。

請注意,尷尬的是,如果您要修改除URL之外的任何請求屬性,但要使其他屬性保持不變,則必須將請求作為第一個參數傳遞,並在第二個參數中指定修改:

const response = await fetch(request, {headers: myHeaders})

這意味着,如果要修改URL 其他一些屬性,則需要執行兩個步驟-首先創建一個新的Request對象來更改URL,然后修改標頭:

let request2 = new Request(newUrl, request)
const response = await fetch(request2, {headers: myHeaders})

或者,當然,您可以執行相反的順序:

let request2 = new Request(request, {headers: myHeaders})
const response = await fetch(newUrl, request2)

或者,對於標頭的特定情況,您也可以利用以下事實:一旦構建了自己的Request對象,就可以直接修改其標頭:

let request2 = new Request(newUrl, request)
request2.headers.set("X-Foo", "Bar")
const response = await fetch(request2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM