کلیدها و امنیت نقشه
کلید عمومی برای مرورگر و کلید محرمانه برای سرور؛ دامنههای مجاز، دسترسی هر سرویس، سقف نرخ و رفع خطای «دامنه مجاز نیست».
در این صفحه
کلید عمومی یا محرمانه
کلید عمومی (nmk_pk_…) برای نقشه در مرورگر و اپ است و در کد صفحه دیده میشود؛ امنیتش از دامنههای مجاز، دسترسی محدود و سقف نرخ میآید. کلید محرمانه (nmk_sk_…) برای سرور شماست (مثلا نشانییابی دستهای) و فقط در سرآیند فرستاده میشود.
const url = new URL("https://maps.namayek.com/v1/autocomplete");url.search = new URLSearchParams({ q: "ونک", lat: "35.757", lng: "51.41", limit: "5", key: "nmk_pk_YOUR_PUBLISHABLE_KEY" });const res = await fetch(url, { credentials: "omit" });const body = await res.json();if (!res.ok) throw new Error(body.code); // مثلا ORIGIN_NOT_ALLOWEDconsole.log(body.items);curl -sS "https://maps.namayek.com/v1/autocomplete?q=%D9%88%D9%86%DA%A9&lat=35.757&lng=51.41&limit=5" \ -H "X-Namayek-Key: $NAMAYEK_SECRET_KEY"دامنههای مجاز
کلید عمومی دستکم یک دامنه مجاز میخواهد. سرور origin را از سرآیند Origin و در نبود آن از Referer میخواند. کاشیهایی که MapLibre میگیرد هم همین سرآیندها را دارند.
| مقدار | میپذیرد | رد میکند |
|---|---|---|
https://www.example.com | https://www.example.com | https://example.com، http://www.example.com |
https://*.example.com | https://a.example.com، https://a.b.example.com | https://example.com، https://evil-example.com، http://a.example.com، https://a.example.com:8443 |
http://localhost:3000 | http://localhost:3000 | http://localhost:5173 |
https://EXAMPLE.com/ | ذخیره به شکل https://example.com | — |
قاعدههای کامل در کلیدهای API.
IPهای مجاز
کلید محرمانهای را که روی سرور برای نقشه به کار میبرید به IP خروجی سرور ببندید. کلید عمومی فهرست IP نمیگیرد چون کاربران شما هر جایی هستند؛ به جایش برای هر IP کاربر سقف جدا (۲۵ درخواست در ثانیه) اعمال میشود.
دسترسی هر سرویس
| دسترسی | سرویسها | مسیرها | کلید |
|---|---|---|---|
maps:tiles | maps.tiles، maps.style | /v1/tiles، /v1/styles | عمومی و محرمانه |
maps:search | maps.autocomplete، maps.search، maps.geocode، maps.reverse | /v1/autocomplete، /v1/search، /v1/geocode، /v1/reverse | عمومی و محرمانه |
maps:routing | maps.route، maps.matrix | /v1/route، /v1/matrix | عمومی و محرمانه |
maps:static | maps.static | /v1/static | عمومی و محرمانه |
webhooks:manage | — | /v1/webhooks (API عمومی) | فقط محرمانه |
چرخش کلید
کلید عمومیای که در اپ موبایل منتشر شده را با دوره همپوشانی طولانی بچرخانید (تا ۱۶۸ ساعت) تا نسخه تازه اپ به دست کاربران برسد. کلید لو رفته را با چرخش صفر ساعته فورا باطل کنید.
سقف نرخ و روزانه
- درخواست در ثانیه هر کلید: پیشفرض ۵۰ برای عمومی و ۱۰۰ برای محرمانه؛ برای هر کلید قابل تغییر.
- سقف روزانه هر کلید (اختیاری)؛ با پر شدن تا نیمهشب تهران
DAILY_CAP_REACHEDمیگیرید. - درخواستهای ویرایشگر سبک پنل در سقف روزانه کلیدها شمرده نمیشوند.
- سقف هزینه پروژه جلوی صورتحساب غیرمنتظره را میگیرد (مصرف و صورتحساب).
خطای «دامنه مجاز نیست»
پاسخ ۴۰۳ با ORIGIN_NOT_ALLOWED یعنی دامنه صفحه در فهرست کلید نیست:
- نشانی دقیق صفحه را ببینید (پروتکل، www و درگاه مهماند).
- همان origin را به کلید اضافه کنید، مثلا
https://www.example.comیا برای همه زیردامنههاhttps://*.example.com. - اگر صفحه با سیاست Referrer-Policy: no-referrer باز میشود و Origin هم نمیفرستد، سیاست را دستکم origin کنید.
- تغییر کلید ظرف چند ثانیه به همه سرورها میرسد.
آخرین بهروزرسانی: