使用 fetch 时清空请求正文

Empty request body when using fetch

我正在尝试使用 fetch 从 React 组件调用 graphql 到 PHP 服务器。这是我第一次尝试使用 fetch.

我在浏览器端使用 React JS,在服务器端使用 Symfony 4。然而,我的所有调用在服务器端都以空主体结束,即使我的浏览器开发工具似乎指示数据已发送。

使用graphiql时,请求成功。我正在尝试尽可能地模仿来自 React 的 graphiql 请求,但主体始终是空白的。

调用如下:

fetch('/api', {
    'method': 'post',
    'credentials': 'include',
    'headers': {
        'Content-Type': 'application/json',
    },
    'body': JSON.stringify({
        "query": "mutation {UpdateActionStatus(input: {actionId: 61, status: TO_DO}) { id }}",
        "variables": null
    }),
}).then(r => {
    console.log(r.json());

    return r.json();
}).catch(error => {
    console.log('There has been a problem with your fetch operation: ', error.message);
});

我已经尝试将 mode 设置为 corsno-corssame-originnavigate:none 这些工作。

我已经尝试过使用 Firefox 和 Chrome:还是不行。

将内容类型更改为 application/graphql 似乎也不起作用。

在 Whosebug 和其他地方使用 fetch 时,我在响应和请求中看到了很多处理空体的问题,但是 none 找到的解决方案似乎解决了我的问题。

我还尝试了以下更粗略的调用,但无济于事。由于我无法解释的原因,我似乎根本无法使用 fetch:

fetch('/api', {
    'method': 'post',
    'credentials': 'include',
    'headers': {
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    'body': 'test=test',
});

怎么办?我在这里遗漏了一些简单的东西吗?

我现在将 GraphQL 与 React 结合使用,而不是直接使用 fetch,而且大多数情况下效果很好。

确保您正确发送 Content-TypeAccept headers。

'Accept': 'application/json',
'Content-Type': 'application/json',