在我的项目中,我想通过第三方API请求数据。并遇到了CORS问题,如下所示:
在我的前端代码中,我使用axios
发送具有最基本用法的ajax get请求,如下所示:
getPositions () {
return axios.get('http://api.metro.net/agencies/lametro/vehicles/')
}
并且如标题所示,浏览器使用以下错误消息阻止请求:
Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response
我对CORS有所了解,并且知道预检是什么。但是仍然对这个问题感到困惑。
我在浏览器的devtools中检查了问题。并发现request headers
部分如下:
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://localhost:3001
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
其中列出了Access-Control-Request-Headers: authorization
的标题。我认为这就是这个问题的原因。但是Access-Control-Request-Headers
用于让服务器知道在发出实际请求Access-Control-Request-Headers
时将使用哪些HTTP标头。
但是我不打算发送Authorization
头,如我的代码所示,我根本没有设置任何头。那么,为什么浏览器阻止了该请求?