Google API 不会识别 */127.0.0.1:*

Google API will not recognize */127.0.0.1:*

我的应用程序成功集成了 Google Maps JS API/Google Places API Web 服务来创建一些 Autocomplete 下拉菜单。我设置了 google api 浏览器密钥,以便开发 (localhost)、暂存和生产 url 工作。但是,在使用此服务的任何页面上,验收测试(使用 127.0.0.1)都会中断。例如:

Capybara::Poltergeist::JavascriptError:
   One or more errors were raised in the Javascript code on the page. If you don't care about these errors, you can ignore them by setting js_errors: false in your Poltergeist configuration (see documentation for details).

   Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error
   Your site URL to be authorized: http://127.0.0.1:52724/clients/3
   Google Maps API error: RefererNotAllowedMapError https://developers.google.com/maps/documentation/javascript/error-messages#referer-not-allowed-map-error
   Your site URL to be authorized: http://127.0.0.1:52724/clients/3
       at https://maps.googleapis.com/maps/api/js?v=3.exp&key=(my_browser_key)&signed_in=true&libraries=places:34 in hb

我已尝试将不同的 127.0.0.1 配置添加到我的浏览器密钥凭据中,但这些配置无效,例如: http://127.0.0.1:* , */127* , and */127.0.0.1:\d\d\d\d\d/*

最后一个看起来很有趣,因为我的测试套件的每个新 运行 都会在 127.0.0.1: 之后生成 5 个随机数字,如上面的错误所示。

*我不想通过更改错误中提到的恶作剧配置来忽略 JS 错误。话虽如此,我实际上并没有在任何这些验收测试中使用该服务。我不想测试 google 功能,我想测试围绕这些下拉菜单的自定义功能。

能够通过将 app_host 和 server_port 直接设置到我的 Capybara 配置中来绕过它。感谢接受的答案 here。我将其添加到我的 spec_helper 文件中:

 def set_host(host)
   default_url_options[:host] = host
   Capybara.app_host = "http://" + host
 end

 RSpec.configure do |config|
   config.before(:each) do
     Capybara.current_driver = :poltergeist
     Capybara.javascript_driver = :poltergeist
     set_host("127.0.0.1:30111")
     Capybara.server_port = 30111
   end
 end

然后我在我的 Google API 密钥凭据中指定了这个 server_port。验收测试现已通过。

更新:

看来 Google 的说明只是过时且不完整(叹息)。经过更多实验后,只需 127.0.0.1 而无需任何 */ 即可。

上述解决方案同样有效。