从 node.js 这按预期工作,发送一个 POST 响应(正如我使用 httpToolkit 验证的那样)
% node
> const axios = require('axios')
> var r = (async () => { const x = await axios.post('http://example.com/v1/secret/data/foo/bar/baz',{data: {foo: 42}},{headers: {'X-Special-Token': 'DATA'}}); return true;})().then(console.log)
undefined
> true
但是从jest
测试中做同样的事情,axios
首先发送一个 OPTIONS 请求。我正在运行的服务无法处理(不是 example.com)
const axios = require('axios');
describe('Simple Post', () => {
test('POST', async () => {
// Axios HERE seems to send an OPTIONS request first...
const x = await axios.post('http://example.com',
{data: {foo: 42}},
{headers: {'X-Special-Token': 'DATA'}});
expect(x.status).toBe(200);
});
});
有什么方法可以说服/配置jest
或者axios
不会axios
神奇地决定发送OPTIONS
吗? 这与 CORS 无关——它的服务器代码与服务器代码对话,但显然其中的某些东西axios
决定了它是合适的。