Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 如何使用Google Chrome Puppeter库进行POST请求?_Javascript_Node.js_Google Chrome_Puppeteer - Fatal编程技术网

Javascript 如何使用Google Chrome Puppeter库进行POST请求?

Javascript 如何使用Google Chrome Puppeter库进行POST请求?,javascript,node.js,google-chrome,puppeteer,Javascript,Node.js,Google Chrome,Puppeteer,大家好, 我正在尝试使用木偶演员无头铬库进行POST请求。我似乎无法让下面的代码正常工作。 我不断得到一个错误,CSRF令牌没有设置,或者cookie无效 我的问题是,我在《木偶演员》中使用的方法是否正确?如果是这样的话,我有没有办法进行一些调试,以便能够看到发送的实际POST请求 我感谢你的建议和帮助。谢谢,您没有创建请求正文:因此出现了错误。您在请求对象上设置的postData属性不是任何已知属性,因此它也不会在请求上设置,这意味着服务器将永远看不到您的CSRF令牌。你应该调查这件事 我相

大家好, 我正在尝试使用木偶演员无头铬库进行POST请求。我似乎无法让下面的代码正常工作。

我不断得到一个错误,CSRF令牌没有设置,或者cookie无效

我的问题是,我在《木偶演员》中使用的方法是否正确?如果是这样的话,我有没有办法进行一些调试,以便能够看到发送的实际POST请求


我感谢你的建议和帮助。谢谢,您没有创建请求正文:因此出现了错误。您在请求对象上设置的
postData
属性不是任何已知属性,因此它也不会在请求上设置,这意味着服务器将永远看不到您的CSRF令牌。你应该调查这件事

我相信只要用
body
替换
postData
就可以了,但是如果不访问端点,就很难知道了。据我们所知,它可能需要特殊的标题

考虑到您只发布普通表单数据(这由
key=value
代码暗示),我还将开始使用浏览器提供的
FormData
对象,以避免手动编码实现细节

const formData = new FormData();

formData.append("CSRFToken", token);

const response = fetch("/loyalty/points", {
      method : 'POST',
      cookie : cookies,
      body   : formData,
      headers : {
        'cookie' : cookies,
        /* other headers you need, possibly content-type (see below) */
      },   
    }).then(response => response.text()).catch(error => console.log(error));

    return response;
  });
警告:使用将始终将数据的
内容类型设置为
multipart/form data
。如果您的服务器由于某种原因不支持该编码,并且您需要使用
application/x-www-form-urlencoded
(), 您不能盲目地更改
内容类型
:您还需要这样做


对于调试,我只需使用一个普通的Chrome实例就可以看到这一点。您应该能够在那里运行代码,并在DevTools中查看网络请求(如果您发布了一个空请求,您会立即注意到)。

您好,感谢您的帮助。我最终重构了代码,但仍然在正文中使用字符串。最后,它工作得非常好。问题是我的函数从未收到令牌参数。我不得不这样做`让postResponse=wait page.evaluate(fetchLoyaltyPoints,token,cookies);`我的fetchLoyaltyPoints函数也必须接受这两个参数,例如,`function fetchLoyaltyFunction(token,cookies){`
const formData = new FormData();

formData.append("CSRFToken", token);

const response = fetch("/loyalty/points", {
      method : 'POST',
      cookie : cookies,
      body   : formData,
      headers : {
        'cookie' : cookies,
        /* other headers you need, possibly content-type (see below) */
      },   
    }).then(response => response.text()).catch(error => console.log(error));

    return response;
  });