প্রোডাকশনে redirect এবং HTTP header ডিবাগ করার জন্য একটি ছোট toolkit
পাঁচটি command-line tool এবং browser technique, যা client ও server-এর মধ্যে আসলে কী ঘটছে তা দেখায়
সুচিপত্র
প্রোডাকশনে HTTP ডিবাগ করার সমস্যা
বেশিরভাগ HTTP সমস্যা browser-এ অদৃশ্য থাকে। একটি redirect chain নীরবে ব্যর্থ হয়, একটি cache header এক অক্ষরের জন্য ভুল হয়, একটি CORS policy কোনো ব্যাখ্যা ছাড়াই request block করে। Browser-এর developer tools আপনাকে conversation-এর result দেখায়, কিন্তু problem-এর কারণ হওয়া raw exchange তারা প্রায়ই লুকিয়ে রাখে।
এটি সবচেয়ে গুরুত্বপূর্ণ প্রোডাকশনে, যেখানে কী বদলেছে তা দেখার জন্য আপনি logging যোগ করতে বা service restart করতে পারেন না। আপনার এমন tool দরকার যা আসল HTTP conversation দেখায়: request headers, response headers, status codes, redirect targets, timing। এই কাজটি নির্ভরযোগ্যভাবে করে এমন পাঁচটি tool, এবং সেগুলোর পরিপূরক browser technique নিচে দেওয়া হলো।
curl: ভিত্তি
curl হলো প্রথম tool, কারণ এটি মাঝখানে কোনো browser interpretation ছাড়াই server ঠিক কী পাঠিয়েছে তা দেখায়।
Body ছাড়া response headers দেখতে:
curl -I https://example.com
Redirect follow করে প্রতিটি step দেখতে:
curl -L -v https://example.com
-v flag (verbose) সব header-সহ full request এবং response দেখায়। -L flag automatic redirect follow করে। একসঙ্গে এগুলো আপনাকে পুরো redirect chain দেখায়, আর বেশিরভাগ production problem সেখানেই থাকে।
শুধু redirect locations দেখতে:
curl -s -o /dev/null -w "%{http_code} %{redirect_url}\n" -L https://example.com
Full header-এর noise ছাড়া redirect chain verify করতে হলে এটি useful। -w flag output format করে শুধু status code এবং chain-এর next URL দেখায়।
curl আপনাকে custom headers পাঠাতেও দেয়, যা CDN behavior, authentication, বা API endpoints test করার জন্য essential:
curl -H "Authorization: Bearer token" -H "Accept: application/json" https://api.example.com
httpie: ভালো default-সহ curl
httpie একটি Python tool, যা curl যা করে সেটাই করে, তবে syntax মনে রাখা সহজ এবং output পড়া সহজ। এটি replacement নয়—curl বেশি powerful এবং বেশি widely installed—কিন্তু quick check-এর জন্য httpie দ্রুততর।
Headers দেখতে:
http HEAD https://example.com
Redirect follow করতে:
http --follow --all https://example.com
--all flag redirect chain-এর প্রতিটি response দেখায়, শুধু final response নয়। এটি curl -L -v-এর equivalent, তবে output color-coded এবং scan করা সহজ।
JSON পাঠাতে:
http POST https://api.example.com name=value
httpie default হিসেবে JSON ধরে নেয়, ফলে API test করার সময় typing কম লাগে। এটি response pretty-print-ও করে, ফলে malformed headers বা unexpected values চোখে পড়া সহজ হয়।
Browser DevTools: Network tab
সমস্যাটি যদি শুধু browser-এ ঘটে, তাহলে browser-এর Network tab থেকেই শুরু করা উচিত। এটি আপনাকে curl-এর মতো একই তথ্য দেখায়, কিন্তু browser-এর interpretation-ও দেখায়: এটি request block করেছে কি না, caching কীভাবে handle করেছে, cookies পাঠিয়েছে কি না।
Full request এবং response headers দেখতে, Network tab-এ যেকোনো request-এ click করুন, তারপর Headers section দেখুন। "Raw" view headers ঠিক যেমন পাঠানো হয়েছিল তেমনই দেখায়, কোনো formatting ছাড়া।
Redirect chains দেখতে, 3xx status code-সহ request খুঁজুন। Browser সেগুলোকে final request-এর নিচে group করে, কিন্তু প্রতিটি step দেখতে আপনি expand করতে পারেন। এখানেই redirect loops, missing Location headers, বা ভুল domain-এ point করা redirects পাওয়া যাবে।
Timing দেখতে, যেকোনো request-এর Timing tab দেখুন। এতে browser DNS lookup, TCP connection, TLS handshake, এবং server-এর জন্য waiting-এ কত সময় ব্যয় করেছে তা দেখা যায়। কোনো redirect slow হলে, timing tab বলে দেয় সমস্যাটি network latency নাকি server processing।
একটি limitation: security reason-এর জন্য browser কিছু header লুকিয়ে রাখে। Set-Cookie headers দেখা যায়, কিন্তু actual cookie values redacted থাকে। Authorization headers কখনও কখনও সম্পূর্ণ লুকানো থাকে। এগুলো দেখতে হলে curl ব্যবহার করুন।
mitmproxy: intercepting proxy
mitmproxy একটি Python tool, যা আপনার browser এবং server-এর মাঝখানে বসে, real time-এ প্রতিটি request এবং response দেখায়। এটি curl-এর চেয়ে জটিল, কিন্তু browser আসলে কী পাঠায়—browser automatic যোগ করা headers-সহ—তা দেখানোর জন্য এটিই একমাত্র tool।
এটি start করতে:
mitmproxy
তারপর আপনার browser-কে HTTP proxy হিসেবে localhost:8080 ব্যবহার করতে configure করুন। mitmproxy terminal interface-এ প্রতিটি request দেখাবে। আপনি headers inspect করতে, request পাঠানোর আগে edit করতে, বা ভিন্ন parameters দিয়ে request replay করতে পারেন।
শুধু browser-এ ঘটে এমন problem debug করতে এটি useful: CORS preflight requests, cookie handling, বা certain headers present থাকলে fail করা requests। Corporate proxy বা VPN-এর পেছনে আপনার site কীভাবে behave করে তা test করতেও এটি useful, কারণ mitmproxy সেই environments simulate করতে পারে।
Downside হলো setup complexity। mitmproxy যাতে HTTPS traffic intercept করতে পারে, তার জন্য আপনাকে একটি root certificate install করতে হবে, এবং proxy ব্যবহার করার জন্য browser configure করতে হবে। Quick check-এর জন্য curl দ্রুততর। Deep debugging-এর জন্য mitmproxy setup time-এর মূল্য রাখে।
webpagetest: production perspective

WebPageTest একটি free service, যা different location-এর real browsers থেকে আপনার page load করে এবং full HTTP conversation দেখায়। এটি curl-এর চেয়ে slow, কিন্তু real users কী experience করে তা দেখায়, CDN behavior, DNS resolution, এবং TLS negotiation-সহ।
"Request Headers" এবং "Response Headers" views browser ঠিক কী পাঠিয়েছে এবং পেয়েছে তা দেখায়। "Waterfall" view redirects-সহ প্রতিটি request-এর timing দেখায়। Certain region বা certain network-এ only ঘটে এমন problem এখানেই পাওয়া যায়।
WebPageTest main document-এর redirect chain-ও দেখায়, আর বেশিরভাগ redirect problem সেখানেই থাকে। আপনার site যদি http:// থেকে https://, তারপর www. থেকে non-www., তারপর / থেকে /en/-এ redirect করে, WebPageTest আপনাকে তিনটি step-ই দেখায় এবং প্রতিটিতে কত সময় লেগেছে তাও দেখায়।
এই HTTP fundamentals validate এবং optimize করতে সাহায্যকারী tools-এর জন্য, Wux Webtools offers several utilities যা সম্পূর্ণভাবে আপনার browser-এ run করে, যার মধ্যে header analyzers এবং redirect checkers আছে, এবং সবকিছু client-side process করে আপনার privacy রক্ষা করে।
Header যখন বিভ্রান্ত করে
সবচেয়ে কঠিন HTTP problem হলো সেগুলো, যেখানে server contradictory headers পাঠায়। একটি Cache-Control header বলে no-cache, কিন্তু একটি Expires header বলে resource এক বছরের জন্য valid। একটি Location header relative URL-এ point করে, কিন্তু Content-Location header অন্য কোথাও point করে। Browser-কে guess করতে হয় কোনটিকে trust করবে, এবং different browsers different guess করে।
এমন হলে, server যে order-এ raw headers পাঠিয়েছে সেই order-এ আপনাকে সেগুলো দেখতে হবে। curl -v এটি করে। mitmproxy-ও করে। Browser-এর DevTools কখনও কখনও readability-এর জন্য headers reorder করে, যা problem লুকিয়ে ফেলে।
আরেকটি common issue: এমন headers যা আপনার application নয়, বরং CDN বা load balancer যোগ করে। আপনি যদি caching problem debug করেন, তাহলে জানতে হবে Cache-Control header আপনার app থেকে এসেছে নাকি CDN থেকে। curl final result দেখায়, কিন্তু প্রতিটি header কোথা থেকে এসেছে তা বলে না। এর জন্য CDN bypass করতে হবে (origin server-এ directly hit করে) এবং headers compare করতে হবে।
Redirect loop সমস্যা
Redirect loops হলো প্রোডাকশনে সবচেয়ে common HTTP problem। এগুলো ঘটে যখন দুটি server কোনো URL কোথায় point করা উচিত তা নিয়ে disagree করে: CDN origin-এ redirect করে, origin আবার CDN-এ redirect করে। অথবা load balancer HTTP থেকে HTTPS-এ redirect করে, কিন্তু app X-Forwarded-Proto header না দেখায় HTTPS আবার HTTP-তে redirect করে।
এটি debug করতে, প্রতিটি step-এ Location header-সহ full redirect chain দেখতে হবে। curl -L -v এটি করে, তবে infinite loop ঠেকাতে 50 redirect-এর পর থেমে যায়। আপনি যদি সেই limit hit করেন, তাহলে আপনার redirect loop আছে।
Fix সাধারণত configuration change: app-কে X-Forwarded-Proto header trust করতে বলুন, অথবা CDN-কে already HTTPS requests redirect করা বন্ধ করতে বলুন। কিন্তু loop না দেখা পর্যন্ত আপনি এটি fix করতে পারবেন না, এবং browser give up করার আগে কয়েকটির বেশি redirect দেখায় না।
আগে কী check করবেন
প্রোডাকশনে কিছু ভেঙে গেলে, এই order-এ check করুন:
- Status code: এটি কি আপনার expected? 301 permanent, 302 temporary, 307 HTTP method preserve করে। আপনি যদি wrong code দেখেন, তাহলে problem আপনার redirect configuration-এ।
- Location header: এটি কি ঠিক জায়গায় point করছে? এটি absolute URL নাকি relative? Relative URLs current URL-এর against resolve হয়, যা base URL আপনার ধারণামতো না হলে unexpected results তৈরি করতে পারে।
- Cache headers: Browser কি redirect cache করছে? 301 redirect default হিসেবে cached হয়, যার অর্থ misconfigured redirect fix করার পরও আপনার site কয়েক ঘণ্টা ভাঙা থাকতে পারে। Browser কতক্ষণ redirect মনে রাখবে তা দেখতে
Cache-ControlএবংExpiresheaders check করুন।
- CORS headers: Request cross-origin হলে, server কি ঠিক
Access-Control-Allow-Originheader পাঠায়? না হলে browser request block করবে, এবং console-এ CORS error দেখবেন। Server-এর response headers-ই এটি fix করার একমাত্র জায়গা—browser-এ এটি workaround করা যায় না।
- Timing: Request-এ কত সময় লেগেছে? Slow হলে, এটি network latency নাকি server processing? Browser-এর DevTools এবং WebPageTest দুটিই timing breakdown দেখায়, যা সময় কোথায় গেছে তা বলে দেয়।
Privacy এবং headers নিয়ে browser behavior কীভাবে বদলেছে তা আরও গভীরভাবে দেখতে, 2026 সালে cookies-এর জন্য কী বদলেছে এবং এ নিয়ে কী করবেন দেখুন, যেখানে recent browser updates-এর header এবং consent implications আলোচনা করা হয়েছে।
Key takeaways
curl -L -vbrowser interpretation ছাড়াই full redirect chain এবং সব headers দেখায়- Browser-এর Network tab response নিয়ে browser কী করেছে তা দেখায়, caching এবং CORS decisions-সহ
mitmproxybrowser কী পাঠিয়েছে তা দেখায়, browser automatic যোগ করা headers-সহ- WebPageTest real users কী experience করে তা দেখায়, CDN behavior এবং regional differences-সহ
- Redirect loops এবং contradictory headers সবচেয়ে common production problems, এবং raw HTTP inspection ছাড়া এগুলো অদৃশ্য থাকে
FAQ
Q: curl কেন browser-এর চেয়ে different headers দেখায়?
A: কারণ browser automatic headers (User-Agent, Accept, Cookie) যোগ করে এবং caching ও CORS-এর জন্য নিজের rules follow করে। curl শুধু আপনি যা পাঠাতে বলেন সেটাই পাঠায়। Browser আসলে কী পাঠায় তা দেখতে mitmproxy বা browser-এর DevTools ব্যবহার করুন।
Q: এমন redirect কীভাবে debug করব যা শুধু কিছু users-এর ক্ষেত্রে ঘটে?
A: Redirect user পাঠানো headers-এর ওপর depend করে কি না check করুন: User-Agent, Accept-Language, Cookie, বা IP address (X-Forwarded-For-এর মাধ্যমে)। User যে same headers পাঠিয়েছে তা পাঠাতে curl ব্যবহার করুন, অথবা user-এর location থেকে page load করতে WebPageTest ব্যবহার করুন।
Q: 301 এবং 302 redirects-এর মধ্যে পার্থক্য কী?
A: 301 permanent এবং browser-কে redirect cache করতে বলে (কখনও কখনও forever)। 302 temporary এবং browser-কে এটি cache না করতে বলে। কোনটি ব্যবহার করবেন নিশ্চিত না হলে 302 ব্যবহার করুন—পরে চাইলে সবসময় 301-এ change করতে পারবেন।
Q: আমার redirect curl-এ কাজ করে কিন্তু browser-এ করে না কেন?
A: সম্ভবত browser পুরোনো redirect cache করছে, অথবা CORS বা mixed content rules-এর কারণে browser redirect block করছে। Error দেখতে browser-এর DevTools console check করুন, এবং browser cached response ব্যবহার করছে কি না দেখতে Cache-Control headers check করুন।
Q: CDN যে headers যোগ করে তা কীভাবে দেখব?
A: CDN URL hit করতে curl ব্যবহার করুন, তারপর origin server-এ directly hit করতে আবার curl ব্যবহার করুন (CDN bypass করে)। Headers compare করুন। যেগুলো শুধু first response-এ দেখা যায়, সেগুলো CDN থেকে এসেছে।
<!-- tool-cta:start -->
💡 এটি চেষ্টা করুন: রিডাইরেক্ট-সংক্রান্ত সমস্যা খুঁজে বের করার সময়, Redirect Checker পুরো চেইন ট্রেস করে এবং প্রতিটি ধাপে স্ট্যাটাস কোড ও হেডার দেখায়।
<!-- tool-cta:end -->
Sources
- curl documentation — curl command-line options এবং behavior-এর official reference
- HTTPie documentation — httpie syntax এবং features-এর guide
- MDN Web Docs: HTTP redirections — HTTP redirect status codes এবং behavior-এর comprehensive explanation
- WebPageTest documentation — WebPageTest results এবং headers কীভাবে interpret করবেন

