首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Google Chrome Puppeteer库执行POST请求?

如何使用Google Chrome Puppeteer库执行POST请求?
EN

Stack Overflow用户
提问于 2018-06-04 21:58:22
回答 1查看 3.7K关注 0票数 1

大家好,我正在尝试使用puppeteer chrome库做一个POST请求。我似乎不能让下面的代码工作。

代码语言:javascript
复制
    // Get csrf token
    let token = await page.evaluate(() => document.querySelector('[name="CSRFToken"]').value);

    let postResponse = await page.evaluate(async(token, cookies) => {    

    let response = fetch("/loyalty/points", {
          method : 'POST',
          cookie : cookies,
          postData : 'CSRFToken=' + token,      
        }).then(response => response.text()).catch(error => console.log(error));

        return response;

      });

      console.log('Final response');
      console.log(postResponse);

我一直收到CSRF令牌未设置或cookie无效的错误。

我的问题是,我是否使用了puppeteer中的正确方法来发布帖子?如果是这样的话,有没有办法让我做一些调试,让我可以看到实际发送的POST请求?

我很感谢任何建议或帮助。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 22:14:40

您没有创建请求正文:因此出现错误。您在request对象上设置的postData属性不是任何已知属性,因此它也不会在请求上设置,这意味着服务器永远不会看到您的CSRF令牌。你应该调查一下MDN docs on fetch()

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

由于您只发布普通表单数据(从您的key=value代码中可以看出),我还将开始使用您的浏览器提供的FormData对象,以避免手动编写实现细节。

代码语言:javascript
复制
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;
  });

注意:使用FormData API将始终将数据的content-type设置为multipart/form-data。如果您的服务器由于某种原因不支持这种编码,而您需要使用application/x-www-form-urlencoded (see here for difference),那么您不能盲目地更改Content-Type:您还需要使用url encode the content

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50682348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档