به برنامههای وب پیشروی نصبشده اجازه دهید نشانیهای وب را برای تجربه یکپارچهتر مدیریت کنند.
برنامههای وب پیشرو بهعنوان مدیریتكننده نشانی وب چیست؟
تصور کنید بااستفاده از برنامه پیامرسان فوری مثل «پیامنگار» در macOS با دوستی گپ میزنید و درباره موسیقی صحبت میکنید. همچنین تصور کنید که هر دو شما برنامه وب پیشروی music.example.com را در دستگاههایتان نصب کردهاید. اگر میخواهید قطعه موردعلاقهتان را با دوستتان همرسانی کنید تا او هم لذت ببرد، میتوانید
پیوند عمیقی مثل https://music.example.com/rick-astley/never-gonna-give-you-up برای او ارسال کنید. ازآنجاییکه این پیوند بسیار طولانی است، توسعهدهندگان music.example.com ممکن است تصمیم گرفته باشند پیوند کوتاه دیگری به هر قطعه اضافه کنند، مثلاً https://🎵.example.com/r-a/n-g-g-y-u.
«برنامه وب پیشرو» بهعنوان «مدیریتکننده نشانی وب» به برنامههایی مثل music.example.com اجازه میدهد خودشان را بهعنوان مدیریتکننده نشانی وب برای نشانیهای وبی که با الگوهایی مثل https://music.example.com، https://*.music.example.com، یا https://🎵.example.com مطابقت دارند ثبت کنند تا پیوندهای خارج از «برنامه وب پیشرو»، مثلاً از برنامه پیامرسان فوری یا کارخواه ایمیل، بهجای باز شدن در برگه مرورگر، در «برنامه وب پیشرو» نصبشده باز شوند.
«برنامه وب پیشرو» بهعنوان «مدیریتكننده نشانی وب» شامل دو افزودنی است:
- عضو مانیفست برنامه وب
"url_handlers". - قالب فایل
web-app-origin-associationبرای اعتبارسنجی انجمنهای نشانی وب درون و بیرون از محدوده.
موارد استفاده پیشنهادی برای برنامههای وب پیشرو بهعنوان «مدیریتكننده نشانی وب»
نمونههایی از سایتهایی که ممکن است از این میانای برنامهسازی کاربردی استفاده کنند عبارتاند از:
- سایتهای جاریسازی موسیقی یا ویدیو تا پیوندهای قطعه یا پیوندهای فهرست پخش در تجربه پخشکننده برنامه باز شود.
- خوانندههای RSS یا اخبار تا سایتهای دنبالشده یا مشترکشده در حالت خواندن برنامه باز شوند.
نحوه استفاده از برنامههای وب پیشرو بهعنوان «مدیریتکننده نشانی وب»
فعال کردن با about://flags
برای آزمایش کردن «برنامههای وب پیشرونده» بهعنوان «گردانندههای نشانی وب» بهصورت محلی، بدون کد آزمایش معرفی ویژگی جدید، پرچم
#enable-desktop-pwas-url-handling را در about://flags فعال کنید.
عضو مانیفست برنامه وب "url_handlers"
برای مرتبط کردن برنامه وب پیشرونده نصبشده با الگوهای نشانی وب، این الگوها باید در مانیفست برنامه وب مشخص شوند. این اتفاق ازطریق عضو "url_handlers" رخ میدهد. آرایهای از اشیاء را با ویژگی origin میپذیرد که یک string الزامی است و الگویی برای تطبیق مبدأها است. این الگوها میتوانند پیشوند نویسه عام (*) داشته باشند تا چندین زیردامنه (مانند https://*.example.com) را دربرگیرند. نشانیهای وبی که با این مبدأها مطابقت داشته باشند میتوانند توسط این برنامه وب مدیریت شوند. طرح همیشه https:// فرض میشود، اما باید بهصراحت ذکر شود.
گزیده زیر از مانیفست برنامه وب نشان میدهد که چگونه نمونه برنامه وب پیشرو موسیقی از پاراگراف مقدماتی میتواند این را راهاندازی کند. ورودی دوم با نویسه عام ("https://*.music.example.com") تضمین میکند
که برنامه برای https://www.music.example.com یا نمونههای احتمالی دیگر مثل
https://marketing-activity.music.example.com نیز فعال شود.
{
"url_handlers": [
{
"origin": "https://music.example.com"
},
{
"origin": "https://*.music.example.com"
},
{
"origin": "https://🎵.example.com"
}
]
}
فایل web-app-origin-association
ازآنجاییکه «برنامه وب پیشرونده» در مبدأ متفاوتی (music.example.com) نسبتبه برخیاز نشانیهای وبی که باید مدیریت کند (مثلاً https://🎵.example.com) قرار دارد، برنامه باید مالکیت این مبدأهای دیگر را تأیید کند. این
اتفاق در فایل web-app-origin-association که در مبدأهای دیگر میزبانی میشود رخ میدهد.
این فایل باید حاوی JSON معتبر باشد. ساختار سطح بالا یک شیء است، با عضوی بهنام
"web_apps". این عضو آرایهای از اشیاء است و هر شیء نشاندهنده ورودی برای یک برنامه وب یکتا است. هر شیء حاوی موارد زیر است:
| فیلد | شرح | نوع | پیشفرض |
|---|---|---|---|
"manifest" |
(الزامی) رشته نشانی وب مانیفست برنامه وب مربوط به «برنامه وب پیشرونده» (PWA) | string |
موجود نیست |
"details" |
(اختیاری) شیئی که حاوی آرایههایی از الگوهای نشانی وب گنجاندهشده و مستثنیشده است | object |
موجود نیست |
هر شیء "details" حاوی موارد زیر است:
| فیلد | شرح | نوع | پیشفرض |
|---|---|---|---|
"paths" |
(اختیاری) آرایه رشتههای مسیر مجاز | string[] |
[] |
"exclude_paths" |
(اختیاری) آرایه رشتههای مسیر غیرمجاز | string[] |
[] |
یک نمونه فایل web-app-origin-association برای مثال برنامه وب پیشرونده موسیقی در بالا ارائه شده است. این فایل در مبدأ 🎵.example.com میزبانی میشود و ارتباط با برنامه وب پیشروی music.example.com را که با نشانی وب مانیفست برنامه وب آن شناسایی میشود برقرار میکند.
{
"web_apps": [
{
"manifest": "https://music.example.com/manifest.json",
"details": {
"paths": ["/*"],
"exclude_paths": ["/internal/*"]
}
}
]
}
چه زمانی نشانی وب مطابقت دارد؟
اگر هر دو شرط زیر برآورده شود، «برنامه وب پیشرونده» با نشانی وب برای رسیدگی مطابقت دارد:
- نشانی وب با یکی از رشتههای مبدأ در
"url_handlers"مطابقت دارد. - مرورگر میتواند بااستفاده از فایل
web-app-origin-associationمربوطه اعتبارسنجی کند که هر مبدأ موافقت میکند به این برنامه اجازه دهد چنین نشانی وبی را مدیریت کند.
درباره اکتشاف فایل web-app-origin-association
برای اینکه مرورگر فایل web-app-origin-association را پیدا کند، توسعهدهندگان باید
فایل web-app-origin-association را در
پوشه /.well-known/ در ریشه برنامه قرار دهند.
برای اینکه این کار انجام شود، نام فایل باید دقیقاً web-app-origin-association باشد.
پخش نمایشی
برای آزمایش کردن برنامههای وب پیشرو بهعنوان «مدیریتکنندههای نشانی وب»، حتماً پرچم مرورگر را همانطور که توضیح داده شده است تنظیم کنید و سپس برنامه وب پیشرو را در https://mandymsft.github.io/pwa/ نصب کنید. با نگاه کردن به
مانیفست برنامه وب آن، میتوانید ببینید که
نشانیهای وب را با الگوهای نشانی وب زیر مدیریت میکند: https://mandymsft.github.io و
https://luhuangmsft.github.io. ازآنجاییکه مورد دوم در مبدأ متفاوتی (luhuangmsft.github.io)
نسبتبه «برنامه وب پیشرو» قرار دارد، «برنامه وب پیشرو» در mandymsft.github.io باید مالکیت را اثبات کند که این کار بااستفاده از
فایل web-app-origin-association میزبانیشده در
https://luhuangmsft.github.io/.well-known/web-app-origin-association انجام میشود.
برای آزمایش اینکه واقعاً کار میکند، بااستفاده از برنامه پیامرسانی فوری دلخواهتان یا ایمیلی که در کارخواه ایمیل غیرمبتنی بر وب (مثل Mail در macOS) مشاهده میشود، پیام آزمایشی برای خودتان ارسال کنید. ایمیل یا پیامک باید حاوی یکی از پیوندهای https://mandymsft.github.io یا https://luhuangmsft.github.io باشد. هر دو باید در «برنامه وب پیشرونده» نصبشده باز شوند.

امنیت و اجازهها
تیم Chromium برنامههای وب پیشرو را بهعنوان «مدیریتکنندههای نشانی وب» بااستفاده از اصول اصلی تعریفشده در کنترل دسترسی به ویژگیهای قدرتمند پلاتفرم وب، ازجمله کنترل کاربر، شفافیت، و ارگونومی طراحی و پیادهسازی کرده است.
کنترل داشتن کاربر
اگر بیشاز یک برنامه وب پیشرو بهعنوان مدیریتکننده نشانی وب برای الگوی نشانی وب معینی ثبت شود، از کاربر خواسته میشود انتخاب کند که میخواهد کدام برنامه وب پیشرو الگو را مدیریت کند (اگر اصلاً بخواهد). پیمایشهایی که در زبانه مرورگر شروع میشوند در این پیشنهاد مدیریت نمیشوند، این پیشنهاد صریحاً برای پیمایشهایی است که خارج از مرورگر شروع میشوند.
شفافیت
اگر درستیسنجی انجمن ضروری نتواند درطول نصب برنامه وب پیشرونده بهطور موفقیتآمیز تکمیل شود، مرورگر برنامه را بهعنوان گرداننده نشانی وب فعال برای نشانیهای وب تحتتأثیر قرارگرفته ثبت نخواهد کرد. اگر گردانندههای نشانی وب بهدرستی پیادهسازی نشوند، میتوان از آنها برای ربودن ترافیک وبسایتها استفاده کرد. بههمین دلیل است که سازوکار ارتباط برنامه بخش مهمی از این طرح است.
برنامههای مختص پلاتفرم میتوانند از APIهای سیستمعامل برای شمارش برنامههای نصبشده در سیستم کاربر استفاده کنند. برای مثال، برنامههای Windows میتوانند از
FindAppUriHandlersAsync
API برای شمارش گردانندههای نشانی وب استفاده کنند. اگر برنامههای وب پیشرو بهعنوان مدیریتكننده نشانی وب در سطح سیستمعامل در Windows ثبت شوند، حضور آنها برای برنامههای دیگر قابلمشاهده خواهد بود.
ماندگاری اجازه
مبدأ میتواند در هر زمانی ارتباطات خود را با برنامههای وب پیشرونده تغییر دهد. مرورگرها بهطور منظم تلاش میکنند انجمنهای برنامههای وب نصبشده را دوباره اعتبارسنجی کنند. اگر ثبت گرداننده نشانی وب بهدلیل تغییر دادههای انجمن یا دردسترس نبودن آن دوباره اعتبارسنجی نشود، مرورگر ثبتها را برمیدارد.
بازخورد
تیم Chromium میخواهد درباره تجربههای شما با «برنامههای وب پیشرونده» بهعنوان «مدیریتکنندههای نشانی وب» بشنود.
درباره طراحی میانای برنامهسازی کاربردی به ما بگویید
آیا چیزی درباره API وجود دارد که طبق انتظار شما کار نمیکند؟ یا روشها یا ویژگیهایی وجود دارد که برای پیادهسازی ایدهتان به آنها نیاز دارید؟ سؤال یا نظری درباره مدل امنیتی دارید؟ مشکل مشخصات را در مخزن GitHub مربوطه ثبت کنید یا نظرات خود را به مشکل موجود اضافه کنید.
گزارش کردن مشکل در پیادهسازی
آیا اشکالی در پیادهسازی Chromium پیدا کردهاید؟ یا پیادهسازی با مشخصات متفاوت است؟
اشکالی را در new.crbug.com ثبت کنید. حتماً تا جایی که میتوانید جزئیات و دستورالعملهای بازتولید را اضافه کنید و UI>Browser>WebAppInstalls را در چارگوش مؤلفهها وارد کنید.
نمایش پشتیبانی از API
آیا قصد دارید از برنامههای وب پیشرونده بهعنوان «گرداننده نشانی وب» استفاده کنید؟ پشتیبانی عمومی شما به تیم Chromium کمک میکند ویژگیها را اولویتبندی کند و به دیگر فروشندگان مرورگر نشان میدهد که پشتیبانی از آنها چقدر حیاتی است.
بااستفاده از هشتگ #URLHandlers، توییتی به @ChromiumDev ارسال کنید و به ما اطلاع دهید که کجا و چگونه از آن استفاده میکنید.
پیوندهای مفید
- توضیحدهنده عمومی
- نمایشی | منبع نمایشی
- اشکال ردیابی Chromium
- ورودی ChromeStatus.com
- مؤلفه Blink:
UI>Browser>WebAppInstalls - بررسی TAG
- اسناد Microsoft
تصدیقنامهها
«برنامههای وب پیشرو» بهعنوان «مدیریتکنندههای نشانی وب» توسط لو هوانگ و مندی چن از تیم Microsoft Edge مشخص و پیادهسازی شده است. این سند توسط جو مدلی بازبینی شده است.