CORS PUT上没有'Access-Control-Allow-Origin'标头,但OPTIONS从服务器返回了正确的原始标头

时间:2019-05-22 06:02:47

标签: node.js express amazon-s3 cors

PUT请求返回400,出现以下错误: “ CORS策略:在请求的资源上不存在'Access-Control-Allow-Origin'标头。” 在此之前发出的OPTIONS请求将返回正确的带有200的Access-Control-Allow-Origin标头。

在此工作之前进行的GET请求就可以了,没有任何问题。

我正在使用Axios发出请求。

我在服务器上使用ExpressJS,并且能够从同一台服务器执行GET请求,但是由于某种原因,PUT请求返回了400错误。 这是之前发送的选项,在这里您可以看到我的服务器返回了“ Access-Control-Allow-Origin”标头: OPTIONS

这是在OPTIONS之后发出的PUT请求: PUT

Cors设置:

  origin: (origin, callback) => {
    if (allowedOrigins.indexOf(origin) !== -1) {
      callback(null, true);
    } else {
      callback(new Error('Not allowed by CORS'));
    }
  },
  method: ['GET', 'PUT', 'POST', 'DELETE', 'UPDATE', 'OPTIONS', 'PATCH'],
  allowedHeaders: ['Authorization', 'Origin', 'OK', 'X-Requested-With', 'Content-Type', 'Accept'],
}));

Axios请求:

axios({
    url: `https://www.example.com`,
        method: 'PUT',
        headers: {
          'Authorization': `Bearer JWT`,
          'Content-Type': 'application/json',
        },
      }).then((response) => {
        console.log(response);
      });

在没有“ CORS策略:请求的资源上不存在'Access-Control-Allow-Origin'标头的情况下,PUT请求应该可以正常通过。”显示的错误。

0 个答案:

没有答案