首页 > 解决方案 > HERE-maps 自动完成的 CORS 问题

问题描述

我想在我的项目中使用 HERE 地图自动完成功能。但是当 ai 像文档中的那样发送请求时

this.axios.get('http://autocomplete.geocoder.api.here.com/6.2/suggest.json
  ?app_id={YOUR_APP_ID}
  &app_code={YOUR_APP_CODE}
  &query=Pariser+1+Berl
  &beginHighlight=<b>
  &endHighlight=</b>'
  )
  .then(response => {
    console.log(response)
  })
  .catch(error => {
    console.log(error)
  })

我收到一个错误

OPTIONS http://autocomplete.geocoder.api.here.com/6.2/suggest.json?{...} 405
Access to XMLHttpRequest at 'http://autocomplete.geocoder.api.here.com/6.2/suggest.json?{...}' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

在网络面板的 Chrome 开发者控制台中,我检查了这个

Provisional headers are shown
Access-Control-Request-Headers: x-auth-token, content-type
Access-Control-Request-Method: GET

我将请求标头中的内容类型设置为 application/json 并且临时标头已更改

to Access-Control-Request-Headers: x-auth-token
Access-Control-Request-Method: GET

所以如果我理解正确,我应该设置 x-auth-token 标头。但是我在哪里可以拿到这个令牌?或者可能是这个问题有其他原因?

文档中没有关于此类问题的内容。

标签: here-api

解决方案


问题很简单,而且有点愚蠢。当用户在我的应用程序中进行身份验证时,我将默认标头添加到 axios

axios.defaults.headers.common['X-Auth-Token'] = token

所以这个头被发送到所有请求。

但是 HERE-map API 不希望在请求中使用此标头,这就是问题的原因。解决方案是从对 HERE-map API 的请求中删除此标头。


推荐阅读