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
而无需任何 *
或 /
即可。
上述解决方案同样有效。
我的应用程序成功集成了 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
而无需任何 *
或 /
即可。
上述解决方案同样有效。