Google Maps JavaScript API RefererNotAllowedMapError


122

Chúng tôi đang cố gắng phát triển ứng dụng chuyển vị trí địa lý cho một trong những khách hàng của mình và trước tiên chúng tôi muốn thử nghiệm ứng dụng này trong miền riêng.

Chúng tôi đã đăng ký API JavaScript của Google Maps và chúng tôi có một khóa trình duyệt hợp lệ và miền của chúng tôi, www.grupocamaleon.com, đã được phép sử dụng khóa đó.

Nhưng chúng tôi không thể tạo ngay cả ví dụ dễ dàng nhất để chạy mà không bị lỗi.

Chúng tôi có, trong miền của chúng tôi và với khóa của chúng tôi, bản demo sau:

(1) http://www.grupocamaleon.com/boceto/aerial-simple.html

Nhưng nó không hoạt động và bảng điều khiển Firebug nói:

"Lỗi API Google Maps: Lỗi API Google Maps: RefererNotAllowedMapError (liên kết đến tài liệu của Google về RefererNotAllowedMapError) URL trang web của bạn được ủy quyền: (1)"

Trang thông tin xác thực của tôi thiếu khả năng thêm liên kết giới thiệu để chấp nhận, vì vậy các giải pháp liên quan đến việc thêm liên kết giới thiệu không khả thi ngay bây giờ.

Trang thông tin xác thực của tôi:

nhập mô tả hình ảnh ở đây

Tại sao chúng ta gặp lỗi đó? Làm thế nào chúng ta có thể sửa chữa nó?


Liên kết giới thiệu API Google maps có thể trùng lặp không được phép . Mã của bạn phù hợp với tôi (với khóa của tôi), vì vậy có điều gì đó không ổn với khóa của bạn, các liên kết giới thiệu được phép hoặc các dịch vụ được phép sử dụng với nó.
geocodezip

Nhưng tôi không có khả năng như vậy trong trang thông tin đăng nhập của mình, như bạn có thể thấy trong câu trả lời của tôi tại đây. Bất kỳ gợi ý?
Grupo Camaleón Creativos

Chà, tôi là một người mới và tôi chưa biết cách sử dụng trang web này một cách chính xác. Xin lỗi vì những bất tiện. Tôi đã chỉnh sửa câu hỏi của mình, thêm thông tin trên trang thông tin xác thực của mình. Một số giải pháp được trích dẫn liên quan đến việc thêm liên kết giới thiệu, điều tôi không thể làm vào lúc này.
Grupo Camaleón Creativos

Nếu bạn không thể thay đổi liên kết giới thiệu cho khóa, hãy xóa hoặc thay thế bằng liên kết giới thiệu mà bạn kiểm soát. Không bắt buộc phải có khóa, nhưng có một số lợi ích.
geocodezip

1
Tôi đã tạo khóa mới không có hạn chế về APP hoặc API, nó cho biết đã hết hạn trong 10 phút, sau đó bắt đầu hoạt động. Tiếp theo, tôi đã thử chỉ thêm API Địa điểm, nhưng nó đang được gọi từ web và nói: Google Maps JavaScript API error: RefererNotAllowedMapErrorngay cả sau khi chờ đợi. Sau đó tôi đã thử Maps JavaScript APIvà nó vẫn tiếp tục báo RefererNotAllowedMapError, đã thử làm mới trang và cuối cùng nó bắt đầu hoạt động sau 2 phút 40 giây. Vì vậy, hãy coi chừng. Nhưng KHÔNG có bất cứ điều gì làm việc cho tôi, và chỉ như vậy Maps JavaScript API. Bạn chỉ cần phải chờ đợi rất nhiều.
tâm lý brm

Câu trả lời:


168

Tôi biết đây là một câu hỏi cũ đã có nhiều câu trả lời, nhưng tôi cũng gặp phải vấn đề này và đối với tôi, vấn đề là tôi đã làm theo ví dụ được cung cấp trên console.developers.google.com và nhập miền của mình theo định dạng *.domain.tld/*. Điều này không làm việc ở tất cả, và tôi đã cố gắng thêm tất cả các loại biến thể này giống như domain.tld, domain.tld/*, *.domain.tld, vv

Điều giải quyết được nó cho tôi là thêm cả giao thức thực tế ; http://domain.tld/*là cái duy nhất tôi cần để nó hoạt động trên trang web của tôi. Tôi đoán tôi sẽ cần thêm https://domain.tld/*nếu chuyển sang HTTPS.

Cập nhật: Google cuối cùng đã cập nhật trình giữ chỗ để bao gồm http:

Trường nhập liên kết giới thiệu API Google Maps


1
Tôi xác nhận: sự kết hợp duy nhất mà cho phép tôi sử dụng các API làhttp://www.---.com/*
Marco Panichi

6
Câu trả lời này là câu trả lời duy nhất khiến mã của tôi hoạt động. Tôi có thể xác nhận rằng ví dụ mà Google cung cấp không hoạt động.
Jargs

1
Cảm ơn bạn, @Google, đã cung cấp thông tin sai cho chúng tôi. http://----.com/* là định dạng chính xác.
Michael Yaeger

2
Nếu bạn có nhiều tên miền phụ bạn có thể làm, http: //*.example.com và https: //*.example.com để trang trải tất cả các căn cứ
tim.baker

1
Có thể Google đã cập nhật tính năng đó - đối với tôi, nó hoạt động mà không cần giao thức. Tôi có example.com/*trong trường cài đặt và nó hoạt động từhttps://example.com/map
Andy

21

Cố lên Google, các bạn thông minh hơn trang Thông tin đăng nhập API cho phép. (Tôi biết vì tôi có hai con trai đang làm việc ở đó.)

Danh sách "liên kết giới thiệu" phức tạp hơn nhiều so với danh sách cho phép. (Tất nhiên, nó nên được tha thứ hơn.) Dưới đây là một số quy tắc mà tôi đã mất hàng giờ để khám phá:

Có thể có những quy tắc khác, nhưng đây là một trò chơi đoán già đoán non.


1
Về câu trả lời trước khi chỉnh sửa, tôi cũng sắp hết kiên nhẫn. Có vẻ như các ký tự đại diện (*) chỉ hoạt động ở cuối địa chỉ ( http://my.site.com/*) hoặc trong miền phụ ( http://*.site.com). Trong TẤT CẢ các trường hợp khác, nó không hoạt động
Cristian Traìna 15/12/18

1
Tôi đã đặt sai một hạn chế để chỉ cho phép API Địa điểm (tab ngay bên cạnh các hạn chế liên kết giới thiệu). Điều này dẫn đến cùng một lỗi RefererNotAllowedMapError.
Matt Greer

Thêm www. tên miền của tôi đã sửa nó cho tôi. Tôi không chắc liệu việc thêm ký tự đại diện (*) vào cuối miền, chẳng hạn như (https://www.my-site.com/*)có khắc phục được sự cố hay không.
Mugé

ứng dụng di động ionic của tôi có tên miền là ionic: // app # / tab. Làm thế nào tôi sẽ bao gồm nó trong các hạn chế. Tôi đã thử nhiều cách kết hợp nhưng vô ích. Ví dụ: ionic: // app # / tabs, httpionic: // app # / tab, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

@ AUK4SO - Dấu thăng ( #) có ý nghĩa đặc biệt trong url. Thấy chưa <a name=...>. Hay ý bạn là iconic://1234/foo?
Rick James,

18

Theo tài liệu, 'RefererNotAllowedMapError' có nghĩa là

URL hiện tại đang tải API JavaScript của Google Maps chưa được thêm vào danh sách các liên kết giới thiệu được phép. Vui lòng kiểm tra cài đặt liên kết giới thiệu của khóa API của bạn trên Bảng điều khiển dành cho nhà phát triển của Google.

Tôi đã thiết lập API nhúng của Google Maps cho mục đích sử dụng cá nhân / công việc của mình và cho đến nay vẫn chưa chỉ định bất kỳ liên kết giới thiệu HTTP nào. Tôi đăng ký không có lỗi. Cài đặt của bạn phải khiến Google nghĩ rằng URL bạn đang truy cập không được đăng ký hoặc không được phép.

nhập mô tả hình ảnh ở đây


15

Chỉ cần nhắc nhở rằng nếu bạn chỉ thay đổi nó, có thể mất đến 5 phút để cài đặt có hiệu lực.


15

Tôi đã thử nhiều biến thể liên kết giới thiệu và cũng đợi 5 phút cho đến khi tôi nhận ra ví dụ mà Google điền vào trường biểu mẫu là thiếu sót. Họ cho thấy:

*.example.com/*

Tuy nhiên, điều đó chỉ hoạt động nếu bạn có subdomain.hoặc www.đứng trước tên miền của mình. Những điều sau đây có hiệu quả với tôi ngay lập tức (bỏ qua khoảng thời gian đầu từ ví dụ của Google):

*example.com/*

9
Ý tưởng tồi - ai đó có thể tạo hackexample.comvà sử dụng api của bạn
HyderA

3
@HyderA - Một khả năng có thể xảy ra hơn là ai đó sẽ đăng ký một loạt tài khoản google miễn phí để nhận thêm lượt tải bản đồ.
ow3n

@HyderA họ vẫn cần chìa khóa, vì vậy không phải là cơ hội lớn. Nhưng bạn nói đúng, vẫn tiềm ẩn rủi ro.
Eoin

ứng dụng di động ionic của tôi có tên miền là ionic: // app # / tab. Làm thế nào tôi sẽ bao gồm nó trong các hạn chế. Tôi đã thử nhiều cách kết hợp nhưng vô ích. Ví dụ: ionic: // app # / tabs, httpionic: // app # / tab, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

10

Theo các tài liệu google này xảy ra bởi vì urltrên đó bạn đang sử dụng API của Google Maps, nó not registeredlist of allowed referrers

BIÊN TẬP :

Từ Google Tài liệu

Tất cả các miền phụ của một miền cụ thể cũng được ủy quyền.

Nếu http://example.com được ủy quyền thì http://www.example.com cũng được ủy quyền. Điều ngược lại là không đúng: nếu http://www.example.com được ủy quyền, thì http://example.com không nhất thiết phải được ủy quyền

Vì vậy, hãy cấu hình http://testdomain.commiền, sau đó http://www.testdomain.comcông việc của bạn sẽ bắt đầu.


Trong trường hợp của tôi, nó đã được định cấu hình sai DNS cho miền. Ví dụ: www.testdomain.com làm việc tốt testdomain.com đã không làm việc gây ra một lỗi
Tahir Khalid

1
Có vẻ như logic của điều đó bị đảo ngược? Trừ khi tôi đang thiếu một cái gì đó.
haibob

10

Kiểm tra xem bạn đã bật APIS chính xác chưa.

Tôi đã thử tất cả các cách trên, dấu hoa thị, tld tên miền, dấu gạch chéo lên, dấu gạch chéo ngược và mọi thứ, thậm chí cuối cùng chỉ nhập một url như một hy vọng cuối cùng.

Tất cả những điều này đều không hoạt động và cuối cùng tôi nhận ra rằng Google cũng yêu cầu bạn chỉ định ngay bây giờ bạn muốn sử dụng API nào (xem ảnh chụp màn hình)

nhập mô tả hình ảnh ở đây

Tôi không có những thứ tôi cần bật (đối với tôi đó là API JavaScript của Maps)

Sau khi tôi bật nó, tất cả đều hoạt động tốt bằng cách sử dụng:

http://www.example.com/ *

Tôi hy vọng rằng sẽ giúp một ai đó! :)



8

Tôi thấy rằng ngay cả của bạn HTTP Referrereslà đủ hợp lệ, tập hợp sai API Restrictionsnguyên nhân Google Maps JavaScript API error: RefererNotAllowedMapError.

Ví dụ:

  • Bạn đang sử dụng API Javascript cho khóa.
  • Thêm http://localhost/*vàoApplication Restrictions / HTTP Referrences
  • Chọn Maps Embed APIthay vìMaps Javascript API
  • Điều này gây ra RefererNotAllowedMapError

Có, trong trường hợp của tôi, việc phân loại sai là vấn đề
Andriy F.

Nhưng những gì về bảo mật? Có ai có thể sử dụng khóa của tôi trong localhost nếu tôi cho phép localhost không?
Kaushal

5

Có rất nhiều giải pháp được cho là trong vài năm và một số giải pháp không hoạt động nữa và một số giải pháp không bao giờ hoạt động, do đó, bản cập nhật của tôi hoạt động vào cuối tháng 7 năm 2018.

Thiết lập:

API JavaScript của Google Maps phải hoạt động bình thường với…

  • nhiều miền gọi API: example.comexample.net
  • tên miền phụ tùy ý:, user22656.example.comv.v.
  • cả giao thức HTTP an toàn và tiêu chuẩn: http://www.example.com/https://example.net/
  • cấu trúc đường dẫn không xác định (tức là một số lượng lớn các đường dẫn URL khác nhau)

Giải pháp:

  • Trên thực tế bằng cách sử dụng mô hình từ trình giữ chỗ: <https (or) http>://*.example.com/*.
  • Không bỏ qua giao thức, nhưng thêm hai mục nhập trên mỗi miền (một mục trên mỗi giao thức).
  • Một mục bổ sung cho các tên miền phụ (với *.tên máy chủ lưu trữ đứng đầu).
  • Tôi có cảm giác rằng RefererNotAllowedMapErrorlỗi vẫn xuất hiện bằng cách sử dụng cấu hình thích hợp (và đã đợi nhiều thời gian). Tôi đã xóa khóa thông tin xác thực, lặp lại yêu cầu (bây giờ nhận đượcInvalidKeyMapError ), tạo thông tin đăng nhập mới (sử dụng cùng một thiết lập) và nó hoạt động kể từ đó.
  • Chỉ thêm giao thức và miền dường như không bao gồm các miền phụ.
  • Đối với một trong các miền, cấu hình hoạt động trông giống như sau:

Ảnh chụp màn hình từ cấu hình API Google

(Như văn bản :)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*

Trong trường hợp của tôi, giải pháp này đã hữu ích nhưng có Hạn chế API trên API sai. Vì lý do nào đó, thông báo lỗi tương tự đã được trả lại. Thay đổi Hạn chế API từ 'API Địa điểm' thành 'API Javascript của Bản đồ' đã khắc phục sự cố.
LMG

4

nhập mô tả hình ảnh ở đây

Chấp nhận yêu cầu từ các liên kết giới thiệu HTTP này (các trang web)

Viết đường dẫn thư mục localhost


3
theo văn bản của Google nó được coi là một tài sản không bắt buộc và nếu nó trống nó nên làm việc
ejectamenta

@ayanchakraborty - Tôi đã thử 10 cách kết hợp khác nhau của localhost / index.html (và các đường dẫn khác nhau) cũng như các kết hợp khác nhau của tệp: ///android_assets/www/index.html - nhưng không có gì hoạt động. RefererNotAllowedMapError trong bảng điều khiển đang hiển thị cho tôi: URL trang web của bạn được ủy quyền: __file_url __ // android_asset / www / index.html # / tab / map //// `- nhưng điều này và các biến thể cũng không hoạt động.
rolinger

4

Tôi gặp phải lỗi tương tự:

nhập mô tả hình ảnh ở đây

Liên kết này nói về cách thiết lập hạn chế khóa API: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

Trong trường hợp của tôi, vấn đề là tôi đang sử dụng hạn chế này:

Các liên kết giới thiệu HTTP (các trang web) Chấp nhận các yêu cầu từ các liên kết giới thiệu HTTP này (các trang web) (Tùy chọn) Sử dụng * cho các ký tự đại diện. Nếu bạn để trống phần này, các yêu cầu sẽ được chấp nhận từ bất kỳ người giới thiệu nào. Đảm bảo thêm liên kết giới thiệu trước khi sử dụng khóa này trong sản xuất. https://*.example.net/*

Điều này có nghĩa là các URL như https://www.example.net hoặc https://m.example.net hoặc https://www.example.net/San-salvador/ sẽ hoạt động. Tuy nhiên, các URL như https://example.net hoặc https://example.net hoặc https://example.net/San-salvador/ sẽ không hoạt động. Tôi chỉ cần thêm một liên kết giới thiệu thứ hai:

https://example.net/*

Điều đó đã khắc phục sự cố cho tôi.


4

Tôi thêm 2 miền trang web, đặt "*" trong miền phụ không hoạt động nhưng miền phụ cụ thể "WWW" và miền phụ không hoạt động cho các trang web của tôi bằng cách sử dụng cùng một khóa API Google Map.

không sử dụng "*" trong miền phụ

Hy vọng nó sẽ giúp.


3

bạn hiển thị ảnh chụp màn hình trang thông tin đăng nhập api của mình, nhưng bạn phải nhấp vào "Khóa trình duyệt 1" và từ đó để thêm liên kết giới thiệu.


3

Đối với các trang lồng nhau sâu hơn

Ví dụ: nếu bạn có một dự án trong một thư mục hoặc các trang lồng nhau

http://yourdomain.com/your-folder/your-page bạn có thể nhập cái này vào

http://yourdomain.com/*/*

Phần quan trọng là /*/*/*tùy thuộc vào bạn cần đi bao xa

Có vẻ như ý *chí không phù hợp /hoặc đi vào con đường sâu hơn ..

Điều này sẽ cung cấp cho bạn quyền truy cập đầy đủ vào tên miền, trừ khi bạn có lồng ghép sâu hơn thế ..


3

Không có bản sửa lỗi nào trong số này hiệu quả với tôi cho đến khi tôi phát hiện ra nguyên nhân RefererNotAllowedMapErrorcó thể do không có tài khoản thanh toán được liên kết với dự án. Vì vậy, hãy đảm bảo kích hoạt bản dùng thử miễn phí của bạn hoặc bất cứ điều gì.


3
  1. Rằng thanh toán của bạn đã được bật

  2. Trang web của bạn đã được thêm vào Google Console

  3. Trang web của bạn được thêm vào liên kết giới thiệu trong ứng dụng của bạn.

  4. (tạo ký tự đại diện cho cả www và không có www)

http://www.example.com/ * và http://example.com/ *

  1. Bản đồ Javascript đó được bật và bạn đang sử dụng thông tin đăng nhập chính xác

  2. Trang web đã được thêm vào DNS của bạn để kích hoạt Google Console của bạn ở trên.

  3. Hãy mỉm cười sau khi nó hoạt động!


Danh sách dẫn đến nhiều phép có thể được tìm thấy trong Google Cloud Platform console web (console.cloud.google.com) dướiAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Thạc sĩ Vịt

3

Đây là một sản phẩm siêu nhỏ khác của Google với một lỗi xấu khủng khiếp.

Vấn đề tôi đã tìm thấy với điều này là nếu bạn giới hạn khóa API theo địa chỉ IP, thì nó sẽ không hoạt động ... NHƯNG Google phải làm rõ vấn đề này ... Mãi cho đến khi khắc phục sự cố và nghiên cứu, tôi mới tìm thấy:

Các khóa API có giới hạn về địa chỉ IP chỉ có thể được sử dụng với các dịch vụ web được thiết kế để sử dụng từ phía máy chủ (chẳng hạn như API mã hóa địa lý và các API dịch vụ web khác). Hầu hết các dịch vụ web này có các dịch vụ tương đương trong API JavaScript của Maps (ví dụ: xem Dịch vụ mã hóa địa lý). Để sử dụng các dịch vụ phía máy khách API JavaScript của Maps, bạn sẽ cần tạo một khóa API riêng có thể được bảo mật bằng giới hạn liên kết giới thiệu HTTP (xem phần Hạn chế khóa API).

https://developers.google.com/maps/documentation/javascript/error-messages

FFS Google ... Một thông tin khá quan trọng cần được làm rõ khi thiết lập ...



2

Cuối cùng thì tôi cũng đã làm việc bằng cách sử dụng mẹo này từ Google: ( https://support.google.com/webmasters/answer/35179 )

Đây là định nghĩa của chúng tôi về tên miền và trang web. Các định nghĩa này dành riêng cho xác minh Search Console:

http://example.com/ - A site (because it includes the http:// prefix)
example.com/ - A domain (because it doesn't include a protocol prefix)
puppies.example.com/ - A subdomain of example.com
http://example.com/petstore/ - A subdirectory of http://example.com site

2

Tôi cũng đã cố gắng để làm cho nó hoạt động, nhưng đây là một số gợi ý:

  • Các URL được đặt làm liên kết giới thiệu bao gồm http, ví dụ:http://example.com/*
  • API JavaScript của Google Maps đã được bật
  • Thanh toán đã được thiết lập trên tài khoản này

Khi tất cả những điều trên đã được giải quyết, các bản đồ sẽ hiển thị như mong đợi.


1

Tôi đang cố gắng sử dụng API Địa điểm (Tự động điền) và cũng phải bật API Maps Javascript từ trong Google Cloud Console trước khi API Địa điểm hoạt động.


0

Kiểm tra bản khai của bạn trên trang web. Để tải API JavaScript của Google Maps, hãy sử dụng thẻ tập lệnh như sau

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>

Tôi sử dụng khai báo này trên trang Wordpress của mình trong tệp function.php

wp_enqueue_script("google-maps-v3", "//maps.google.com/maps/api/js?key=YOUR_API_KEY", false, array(), false, true);

Tôi đã đặt khóa API trên định dạng này và nó hoạt động tốt

http://my-domain-name(without www).com/*

tuyên bố này không hoạt động

*.my-domain-name.com/*

0

Việc loại bỏ các hạn chế (thành Không có) phù hợp với tôi.


6
loại bỏ các hạn chế được coi là hành vi xấu và khiến API của bạn dễ bị tấn công.
mtness

2
@mtness rõ ràng là có nhưng người đăng đã thử nó trước mà không thành công. Rất tiếc, tài liệu của Google không hữu ích hơn. Mỗi câu trả lời ở đây đang mang lại mẹo mới, nó gần giống như một trò chơi đoán ...
James Wong - Khôi phục Monica


0

Bảng điều khiển Javascript của Chrome đề xuất tôi khai báo toàn bộ địa chỉ trang trong danh sách liên kết giới thiệu HTTP của mình, trong trường hợp này là http://mywebsite.com/map.htm Mặc dù địa chỉ chính xác là http://www.mywebsite.com/map.htm - Tôi đã có các kiểu ký tự đại diện được liệt kê như được đề xuất bởi những người khác nhưng đây là cách duy nhất nó hoạt động với tôi.


0

Điều này đã làm việc cho tôi. Có 2 loại hạn chế chính trong cài đặt khóa api:

  • Application restrictions
  • API restrictions

Hạn chế ứng dụng:

Ở dưới cùng trong phần Liên kết giới thiệu, hãy thêm url trang web của bạn " http://www.grupocamaleon.com/boceto/aerial-simple.html ". Có các quy tắc mẫu ở phía bên phải của phần dựa trên các yêu cầu khác nhau.

Hạn chế ứng dụng

Hạn chế API:

Theo các hạn chế của API, bạn phải chọn rõ ràng 'API Javascript của Maps' từ danh sách thả xuống vì khóa duy nhất của chúng tôi sẽ chỉ được sử dụng để gọi API Google maps (có thể) và lưu nó như bạn có thể thấy trong ảnh bên dưới. Tôi hy vọng điều này làm việc cho bạn ..... đã làm việc cho tôi

nhập mô tả hình ảnh ở đây

Kiểm tra tập lệnh của bạn:

Ngoài ra, vấn đề có thể phát sinh do việc cấp khóa không đúng bên trong thẻ script. Nó phải là một cái gì đó như:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.