Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cloudflare worker脚本不允许post请求_Javascript_Cloudflare Workers - Fatal编程技术网

Javascript Cloudflare worker脚本不允许post请求

Javascript Cloudflare worker脚本不允许post请求,javascript,cloudflare-workers,Javascript,Cloudflare Workers,因此,我正在测试cloudflare web worker脚本,而我似乎无法让我的代码处理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.

因此,我正在测试cloudflare web worker脚本,而我似乎无法让我的代码处理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

有人能看出我做错了什么吗?

问题在于,您只是从请求中复制
方法
,但它有更多的属性。例如,POST请求具有代码未复制的
正文
属性

要执行从原始请求继承所有内容(URL除外)的提取,请执行以下操作:

const response = await fetch(url_without_query_strings, 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)

问题在于,您只是从请求中复制
方法
,但它的属性更多。例如,POST请求具有代码未复制的
正文
属性

要执行从原始请求继承所有内容(URL除外)的提取,请执行以下操作:

const response = await fetch(url_without_query_strings, 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)
谢谢:)我在您的详细回复中学习了分配,并修改了您提供的第一个代码示例的回复保留所有原始请求数据并修改url。谢谢:)我在您的详细回复中学习了分配,并修改了您提供的第一个代码示例的回复保留所有原始请求数据并修改url。