FutureForgeFutureForge

خدمات FutureForge

  • طراحی و ساخت محصولاز شناخت نیاز تا انتشار محصول، یک مسیر روشن پیش رو دارید.
  • توسعه فول‌استکوب‌اپلیکیشن، API و داده را هماهنگ و یکپارچه توسعه دهید.
  • ممیزی مهندسیپیش از هزینه‌ی بیشتر، از وضعیت واقعی محصول‌تان باخبر شوید.
  • مشاوره معماریپیش از یک تصمیم فنی پرهزینه، گزینه‌ها را درست بسنجید.
  • زیرساخت و استقرارمحصول را با خیال راحت منتشر کنید و پایدار نگه دارید.
  • هوش مصنوعی در محصولهوش مصنوعی را فقط جایی به کار می‌گیریم که مسئله‌ای را حل کند.
نمونه‌کارهایادداشت‌هاقیمت‌گذاریدرباره ما
شروع گفتگو
  1. خانه
  2. /یادداشت‌ها
  3. /یادداشت‌ها
FutureForge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی سایت با وردپرستوسعه اختصاصیمهندسی محصولزیرساخت و استقرارمشاوره معماریهوش مصنوعی در محصول

راهنمای انتخاب

یادداشت‌هاقیمت‌گذاریتخمین هزینه پروژهمقایسه روش‌هانمونه‌کارهادرباره ماتماس

ارتباط

hello@futureforge.ir

ایده‌ای برای ساخت دارید؟

نیازتان را مطرح کنید تا درباره مسیر توسعه و قدم بعدی صحبت کنیم.

شروع گفتگو

© 2026 FutureForge. همه حقوق محفوظ است.

حریم خصوصیشرایط استفاده
خانهنمونه‌کارشروعتماس
عملیات و استقرار

curl در لینوکس: گفت‌وگو با HTTP و API از خط فرمان

سا
سهیل ابراهیم‌پور
·۲۹ شهریور ۱۴۰۵·4 دقیقه مطالعه
curlHTTP clientAPI testingcurl -Icurl -X POSTheadersTLS
ترمینال curl -I و استیکی curl

کار با curl برای GET/POST، هدر، کد وضعیت، JSON، دانلود و عیب‌یابی TLS — فرمان‌های واقعی روزمرهٔ توسعه‌دهنده.

قبل از باز کردن Postman یا نوشتن اسکریپت تست، اغلب یک سؤال ساده دارید: آیا این URL از این سرور پاسخ می‌دهد و با چه کدی؟ curl کلاینت انتقال داده از خط فرمان است که برای HTTP/HTTPS در کار روزمرهٔ توسعه و عملیات تقریباً همه‌جا هست. قدرت آن در کنترل دقیق هدر، متد، بدنه و مشاهدهٔ جزئیات پروتکل است — نه فقط «دانلود فایل».

مقایسه با wget در مقالهٔ بعدی می‌آید؛ اینجا خود curl برای API و عیب‌یابی.

اجزای request response GET headers body

پاسخ کوتاه

برای دیدن پاسخ: `curl -sS URL`. برای کد وضعیت و هدر: `curl -sS -D - -o /dev/null URL` یا `curl -I`. برای POST JSON هدر Content-Type و `-d` را بگذارید. `-v` یا `--trace-time` برای عیب‌یابی TLS و مسیر.redirect. همیشه در اسکریپت `-f` یا چک کردن کد خروج/وضعیت را جدی بگیرید تا شکست HTTP خاموش نماند.

curl آینهٔ رفتار کلاینت است؛ اگر اینجا درست است و مرورگر نه، فرق هدر و کوکی را بجویید نه «خراب بودن سرور» را.

GET ساده و سکوت مفید

bash

curl https://example.com/ curl -sS https://example.com/ | head curl -sS -o body.txt -w '%{http_code}\n' https://example.com/

-s پیشرفت را خاموش می‌کند؛ -S خطا را حتی در حالت silent نشان می‌دهد — ترکیب رایج اسکریپت‌ها. -w متغیرهای خروجی مثل http_code را بعد از تمام شدن چاپ می‌کند.

هدر و متد

bash

curl -I https://example.com/ curl -sS -D - -o /dev/null https://example.com/ curl -X OPTIONS -sS -D - -o /dev/null https://api.example.com/v1/items

-I معادل GET با بدنه‌نخواستن برای بسیاری سرورها نیست؛ HEAD می‌فرستد. برای دیدن هدرهای پاسخ یک GET واقعی، -D - همراه دور ریختن بدنه تمیزتر است.

POST و JSON

bash

curl -sS -X POST https://api.example.com/v1/items \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer TOKEN' \ -d '{"name":"demo","ok":true}'

از فایل:

bash

curl -sS -X POST https://api.example.com/v1/items \ -H 'Content-Type: application/json' \ --data-binary @payload.json

توکن را در تاریخچهٔ شل سخت‌کد نکنید؛ از متغیر محیطی یا فایل با مجوز محدود بخوانید.

bash

curl -sS -H "Authorization: Bearer ${API_TOKEN}" https://api.example.com/v1/me

فرم، آپلود، دانلود

bash

curl -sS -F 'file=@./report.pdf' https://example.com/upload curl -sS -L -o image.png https://example.com/image.png curl -sS -C - -O https://example.com/big.iso

-L ریدایرکت را دنبال می‌کند (مراقب حلقه و تغییر متد باشید). -C - ادامهٔ دانلود ناقص، -O نام فایل را از URL می‌گیرد.

TLS، زمان و عیب‌یابی

bash

curl -v https://example.com/ 2>&1 | head -n 40 curl -sS --connect-timeout 3 --max-time 10 https://example.com/ curl -sS -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} total:%{time_total}\n' -o /dev/null https://example.com/

هرگز در production به‌عادت `curl -k` نزنید مگر برای آزمایش کنترل‌شده با گواهی خودامضا؛ مشکل گواهی را درست کنید. جزئیات بیشتر زمان‌بندی به عیب‌یابی شبکه کمک می‌کند.

کد خروج در برابر کد HTTP

به‌صورت پیش‌فرض curl حتی با پاسخ 404 ممکن است کد خروج صفر بدهد چون انتقال موفق بوده. برای شکست‌خوردن روی خطای HTTP:

bash

curl -sS -f https://example.com/missing || echo "HTTP error or transfer fail"

یا کد را با -w بخوانید و در اسکریپت شاخه بزنید. این تفاوت علت باگ‌های CI است که «curl سبز بود ولی API خطا داد».

پروکسی و محیط

bash

curl -sS -x http://proxy.example.com:8080 https://example.com/ env | grep -i proxy

متغیرهای http_proxy/HTTPS_PROXY روی رفتار اثر می‌گذارند؛ در عیب‌یابی سازمانی اول محیط را چک کنید.

جدول میانبر روزمره

هدفالگو
بدنهٔ خامcurl -sS URL
فقط وضعیتcurl -sS -o /dev/null -w '%{http_code}\n' URL
هدر پاسخcurl -sS -D - -o /dev/null URL
JSON POSTcurl -sS -H Content-Type:application/json -d ... URL
جزئیات اتصالcurl -v URL

اشتباه‌های رایج

  • فراموش Content-Type در POST و تعجب از 415.
  • چسباندن توکن در اسکرین‌شات و لاگ CI.
  • استفاده از -k همه‌جا و پنهان شدن حملهٔ MITM.
  • فرض اینکه wget و curl همیشه یک رفتار ریدایرکت دارند.

خلاصه

curl ابزار دقیق حرف زدن با HTTP از ترمینال است: متد، هدر، بدنه، زمان، TLS. با -sS و -w اسکریپت‌پذیرش کنید، با -v عیب‌یابی کنید، و کد HTTP را از موفقیت انتقال جدا بفهمید. برای انتخاب بین curl و wget مقالهٔ بعدی را ببینید.

سوالات متداول

چرا در مرورگر ۲۰۰ است ولی curl گواهی خطا می‌دهد؟

ذخیرهٔ اعتماد CA روی سیستم curl، SNI، یا تفاوت IPv4/IPv6. -v و زنجیرهٔ گواهی را ببینید؛ گاهی مرورگر از store جدا استفاده می‌کند.

چطور چند هدر بفرستم؟

چند بار `-H 'Name: value'` تکرار کنید.

منابع و مراجع

  • curl — command line tool and library: https://curl.se/
  • curl man page online: https://curl.se/docs/manpage.html
  • HTTP response status codes (MDN): https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

اگر با مسئله‌ای شبیه این روبه‌رو هستید، درباره‌ی شرایط پروژه‌تان با هم صحبت کنیم.

برای انتخاب مسیر فنی پروژه‌تان کمک می‌خواهید؟

از مسئله و محدودیت‌هایتان بگویید؛ اگر بتوانیم همراهی‌تان کنیم، برای گفت‌وگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
امنیت n8n: اعتبارنامه، وب‌هوک و SSRF
نصب n8n روی سرور با Docker Compose
n8n چیست و چگونه کار می‌کند؟
امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی
بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

عملیات و استقرار

امنیت n8n: اعتبارنامه، وب‌هوک و SSRF

۹ آبان ۱۴۰۵

عملیات و استقرار

نصب n8n روی سرور با Docker Compose

۸ آبان ۱۴۰۵

عملیات و استقرار

n8n چیست و چگونه کار می‌کند؟

۸ آبان ۱۴۰۵

عملیات و استقرار

امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی

۶ آبان ۱۴۰۵

عملیات و استقرار

بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

۲ آبان ۱۴۰۵
همه یادداشت‌ها315
معماری نرم‌افزار31
واژه‌نامه37
عملیات و استقرار94
مهندسی محصول122
راهنمای وب31
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
شروع گفتگو
ابزارهای رایگان
شروع گفتگو