Skip to content

Commit da516d7

Browse files
committed
Add referer header to Nominatim requests
Per the [Nominatim usage policy][1], all requests should have an identifying Referer or User-Agent header (quoted below). Using the host name, as we already do for Mapbox requests, should be sufficient to satisfy the requirement while avoiding the need for additional settings. > Provide a valid HTTP Referer or User-Agent identifying the > application (stock User-Agents as set by http libraries will not do). [1]: https://operations.osmfoundation.org/policies/nominatim/
1 parent ff88b55 commit da516d7

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/services/GeoService.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,15 @@ private static function _latLngFromAddress_Nominatim ($address, $country): ?arra
796796
$url .= '&country=' . rawurlencode($country);
797797
}
798798

799-
$data = (string) static::_client()->get($url)->getBody();
799+
$referer = Craft::$app->getRequest()->getIsConsoleRequest()
800+
? Craft::getAlias('@web')
801+
: Craft::$app->urlManager->getHostInfo();
802+
803+
$data = (string) static::_client()->get($url, [
804+
'headers' => [
805+
'referer' => $referer
806+
]
807+
])->getBody();
800808
$data = Json::decodeIfJson($data);
801809

802810
if (!is_array($data) || empty($data))
@@ -883,7 +891,15 @@ private static function _addressFromLatLng_Nominatim ($lat, $lng): ?array
883891
$url .= '&accept-language=' . Craft::$app->locale->getLanguageID();
884892
$url .= '&lat=' . rawurlencode($lat) . '&lon=' . rawurldecode($lng);
885893

886-
$data = (string) static::_client()->get($url)->getBody();
894+
$referer = Craft::$app->getRequest()->getIsConsoleRequest()
895+
? Craft::getAlias('@web')
896+
: Craft::$app->urlManager->getHostInfo();
897+
898+
$data = (string) static::_client()->get($url, [
899+
'headers' => [
900+
'referer' => $referer
901+
]
902+
])->getBody();
887903
$data = Json::decodeIfJson($data);
888904

889905
if (!is_array($data) || empty($data) || array_key_exists('error', $data))

0 commit comments

Comments
 (0)