google查了一下,这个错误的根本原因是因为OPTIONS
请求的CORS
预检不成功导致。
当您开始使用自定义请求标头时,您将获得CORS
预检。这是一个使用·HTTP OPTIONS·方式并包含多个属性的请求,其中一个标题是列出客户端要包含在请求中的CORS
头的Access-Control-Request-Headers
。
您需要使用适当的CORS
头回复该CORS
预检,才能使其正常工作。其中一个是Access-Control-Allow-Headers
。该属性需要包含Access-Control-Request-Headers
属性包含的相同值(或更多)。
解决方法:在express的拦截器添加
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
res.header("Access-Control-Allow-Headers", "Content-Type,access-token"); // 修改了这段
res.header("Access-Control-Allow-Credentials", "true");