چرا یک تصویر خراب میشود در حالی که بقیه صفحه بارگذاری میشود
سه شرط، خرابی شبکه را از درخواست مسدودشده و از خطای رندر جدا میکند. پیش از تغییر مسیر، نشانی URL را که مرورگر انتخاب کرده است پیدا کنید.
صفحه بارگذاری میشود، متن نمایش داده میشود و یک تصویر به شکل نماد شکسته میماند. واکنش اولیه سرزنش تونل است، چون تونل همان چیزی است که تغییر کرده. پیش از آن، پیدا کنید مرورگر برای آن تصویر واقعاً کدام URL را درخواست کرده است، چون URL صفحه و URL تصویر دو شاهد متفاوتاند. بیشتر گزارشهای تصویر گمشده به میزبانی میانجامد که هرگز درخواست سالمی دریافت نکرده است، و این پاسخ فقط یک نگاه به پنل شبکه هزینه دارد.
سه شرط تعیین میکند کجا را بگردید
شرط اول این است که تصویر از همان میزبان صفحه بیاید. میزبان تصویر جداگانه به تفکیک نام، اتصال و هویت TLS خودش نیاز دارد، پس صفحهای که بارگذاری میشود دربارهٔ آن چیزی نمیگوید.
شرط دوم این است که مرورگر درخواست را پیش از ارسال مسدود کرده باشد. محتوای مختلط، سیاست امنیت محتوا و قواعد ارجاعدهنده میتوانند یک تصویر را بدون تولید پاسخ عادی سرور متوقف کنند، به همین دلیل هیچ درخواست ناموفقی در فهرست دیده نمیشود.
شرط سوم این است که تحویل موفق شده و رندر شکست خورده باشد، حالتی که بایتها میرسند و تصویر باز هم ظاهر نمیشود. این سه شرط سه مالک متفاوت دارند و فقط اولی پرسشی دربارهٔ شبکه است.
| What you see | Where the fault sits |
|---|---|
| Request absent from the list | Markup, lazy loading or a policy that blocked it |
| Request failed or timed out | Resolution, route, TLS or the image host itself |
| Request returned 200, image blank | Response type, decoding or rendering |
منبعی را که مرورگر واقعاً انتخاب کرده پیدا کنید
URLی که در منبع صفحه میبینید غالباً همان URLی نیست که درخواست شده است. مجموعههای منبع، عناصر picture و پسزمینههای CSS همه به مرورگر اجازه میدهند بر پایهٔ عرض ناحیهٔ دید، تراکم پیکسل یا پشتیبانی قالب، منبع دیگری انتخاب کند. ممکن است تصویری که با تأخیر بارگذاری میشود تا زمانی که صفحه به وضعیت مشخصی نرسد اصلاً درخواست نشود.
عنصر و درخواست را با هم بررسی کنید و هنگام گزارش مشکل، آغازگر را همراه درخواست نگه دارید. مرجع عنصر تصویر در MDN انتخاب منبع، رفتار بارگذاری و کنترلهای ارجاعدهنده را در یک جا پوشش میدهد و همین برای تشخیص اینکه کدام ویژگی URL خراب را انتخاب کرده کافی است.
نام میزبان، وضعیت، هر زنجیرهٔ تغییرمسیر و نوع محتوای پاسخ را ثبت کنید. پاسخ 200ی که صفحهٔ ورود برمیگرداند تصویر قابل استفاده نیست، و تغییرمسیر به صفحهٔ خطای HTML تا زمانی که نوع را نخوانید با فایل خراب یکسان به نظر میرسد.
پیش از شبکه، وضعیت را بخوانید
پایان مهلت، درخواست ردشده و خطای رمزگشایی به گامهای بعدی متفاوتی نیاز دارند و کد وضعیت همان چیزی است که آنها را جدا میکند. پایان مهلت به تفکیک نام، مسیر یا میزبانی اشاره دارد که پاسخ نمیدهد. درخواست ردشده به سیاست یا لایهٔ احراز مجوز اشاره دارد. خطای رمزگشایی به بایتها یا قالب اشاره دارد.
اگر درخواست بهکلی ظاهر نمیشود، نگاه به شبکه را رها کنید و به نشانهگذاری نگاه کنید. رایجترین علت، مدخلی در مجموعهٔ منبع است که مرورگر آن را ترجیح داده و دیگر روی سرور وجود ندارد، و پس از آن عنصری که هیچ اسکریپتی آن را مرئی نکرده است.
همین تمایز، بیشتر تلاش هدررفته در این دسته از گزارشها را جلوگیری میکند.
وقتی مرورگر مسدودش میکند، پاسخی برای خواندن نیست
محتوای مختلط نمونهٔ کلاسیک است: صفحهٔ HTTPSی که تصویری را روی HTTP ساده درخواست میکند، درخواستش بهجای ناموفق، مسدود میشود و کنسول علت را ثبت میکند. سیاست امنیت محتوا هم همان شکل را میسازد و دستور مسدودشده در پیام نام برده میشود. سیاست ارجاعدهندهای که سرآیند را حذف میکند نیز میتواند میزبان محافظتشده در برابر هاتلینک را وادار کند بهجای تصویر، جانگهدار برگرداند.
پیش از دستزدن به مسیر شبکه، علت ثبتشده را بخوانید، چون این مسدودسازیها با تغییر مسیر بهتر نمیشوند. افزودن مجوزهای میانمبدأ هم راهحل نیست: نمایش تصویر از میزبان دیگر و خواندن پیکسلهای آن در canvas دو عملیات متفاوتاند و فقط دومی به سرآیندهایی نیاز دارد که مردم میچسبانند.
برای سایتی که خودتان مدیریت میکنید، URL منبع، پاسخ یا سیاست را نزد صاحبش اصلاح کنید و الزامهای احراز مجوز و ارجاعدهنده را دستنخورده نگه دارید. برای سایتی که کنترلش نمیکنید، صفحه و شواهد درخواست را به کانال پشتیبانی آن بفرستید، نه اینکه پیوندهای منابع خصوصی یا منقضیشونده را دوباره منتشر کنید.
مسیرها را بدون تغییر شواهد مقایسه کنید
اگر واقعاً میخواهید مسیر دسترسی را بیازمایید، همهچیز دیگر را ثابت نگه دارید: همان صفحه، همان حساب، همان تصویر انتخابشده، و فقط یک مسیر مجاز تغییر کند. ورودیهای درخواست را کنار هم مقایسه کنید نه نتیجهٔ رندرشده را، چون نتیجهٔ رندرشده میگوید تصویر ظاهر شد یا نه، نه چرا.
تصویری که روی مسیر تازه بارگذاری میشود ثابت نمیکند آن مسیر مجاز است، و تصویری که خراب میماند ثابت نمیکند تونل مقصر است. اگر تصویر حذف شده یا دسترسی عمداً محدود شده است، از جایگزین پشتیبانیشده استفاده کنید، نه از خاموشکردن بررسی گواهیها یا کپی کردن مواد محافظتشدهٔ دیگران.
ترتیب کار: URL انتخابشده را مشخص کنید، وضعیت و نوعش را بخوانید، وجود علت مسدودسازی ثبتشده را بررسی کنید، سپس هر بار یک تغییر مسیر را مقایسه کنید.