特定于Firefox-CORS预检频道中CORS标头“ Access-Control-Allow-Headers”中缺少令牌“ user-agent”

时间:2018-11-21 13:31:22

标签: javascript google-maps firefox cors

我正在尝试对googleMapsClient地理编码进行api调用,并且仅在使用Firefox时才出现XHR错误。在chrome中工作正常,但在Firefox中,出现以下错误

>     Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at
> https://maps.googleapis.com/maps/api/geocode/json?address=Kothaguda%2C%20Hyderabad%2C%20Telangana%2C%20India&key=AIzaSyB3eaJ_PQV1JPDiYAppYjlhTNQKBKmwn2U.
> (Reason: missing token ‘user-agent’ in CORS header
> ‘Access-Control-Allow-Headers’ from CORS preflight channel)

不确定为什么这是特定于Firefox的。我可以看到请求中有一个“用户代理” http标头。对此,我们将给予任何帮助。

2 个答案:

答案 0 :(得分:2)

您是否正在使用@google/maps软件包?请注意,该软件包仅应与node.js一起使用,而不能在浏览器中使用。 README中也对此进行了说明:

  

注意!   该库是为服务器端Node.js应用程序设计的。在某些情况下,尝试在浏览器或任何其他环境(例如React Native)中在客户端使用它可能会起作用,但大多数情况下不会。尝试使用这些环境时,请不要报告这些问题,因为服务器端Node.js应用程序是此库唯一受支持的环境。对于其他环境,请尝试使用Maps JavaScript API,该API包含类似的功能集,并且明确打算与客户端JavaScript一起使用。

我建议使用Google Maps JavaScript API。

答案 1 :(得分:0)

处理完这个完全相同的问题就可以了。我使用的是@google/maps库,并且地理编码在Chrome浏览器(v71)中工作正常,但在Firefox(v64)中进行预检失败,并且出现与原始问题相同的错误。

如罗伯(Rob)所建议,我最终转而使用Google Maps JavaScript API进行地理编码。

查看每个请求的详细信息……看来@google/maps npm软件包使用的网址与Google Maps JavaScript API的网址不同。实际上... JavaScript API使用的URL返回JSONP结构,并避免一起处理整个CORS。

对于我来说,为什么使用@google/maps对地址进行地理编码在Chrome(而不是Firefox)中能正常工作仍然是一个谜。我认为,与Chrome相比,Firefox具有更严格的CORS要求。