لبات ASPLلبات 0.7.0

البحث في التوثيق

يبدأ البحث بالتوثيق الحالي بالعربية · لبات 0.7.0

اكتب اسما كاملا مثل read_line أو كلمات عن الموضوع.

    English
    ملفات المصدر

    افتح ملف .aspl أو .لبات بترميز UTF-8، حتى 1 MiB، في مسودة جديدة. يبقى الملف في هذا المتصفح ولا يُشغّل تلقائياً.

    واجهة HTTP وحدودها وأخطاؤها

    لبات 0.7.0 · الإصدار الحالي

    تواقيع 0.7.0 الأصلية المنشورة وحدود الرسائل والمعالجات ومالكو الجلسات واللقطات والإخفاقات القابلة للاسترداد.

    محتويات الصفحة

    الخدمة الأصلية ومالكو الجلسات

    المضيف الأصلي فقط، لبات 0.7.0 المنشور. اقرأ دليل HTTP ومجموعة الأمثلة ومتطلبات المضيف. يرفض المتصفح والتضمين الخاص HTTP قبل التنفيذ بالسبب unsupported-supplied-library-profile.

    تدير اخدم المعالجات حتى الإغلاق وتعيد نتيجة<وحدة> بعد تحرير الخادم والعمل التابع. تكمل ابدأ البدء وتعيد نتيجة<جلسة<C,S>>، ويكون المستمعون جاهزين عند نجاحها. لا تعمل المعالجات إلا حين يستدعي التطبيق تقدم؛ لا تشغل صيانة النقل أثناء الإدخال أو الرسم معالجات مصدر. تخضع تقدم لميزانية محدودة. تجمّد محاولة الشبكة المجتازة للتحقق اضبط، وتستهلك محاولة الخدمة المجتازة للتحقق فرصة الخدمة الوحيدة حتى إن فشل الربط أو TLS بعدها. لا يستهلك رفض التحقق الخالص الفرصة ولا يجمد الإعدادات. تعمل طلبات العميل قبل الخدمة وداخلها وبعدها.

    جلسة<C,S> / Session<C,S> مالك مدار معتم. تشترك نسخه في المورد الأصلي والإغلاق. يمكن الاحتفاظ به في قيم التطبيق، لكنه لا يدخل وسيطَي نوع الإعدادات والحالة في أي عمق. لا منشئ أو حقول عامة أو مساواة أو تحويل C عادي. يغلق فقدان آخر نسخة قابلة للوصول المورد، وينهي التنفيذ صلاحية المالكين أيضا. تبقى الذاكرة الأصلية محسوبة حتى سكون التحرير. تحتفظ نسخ الإعدادات والحالة بالمقابض المدارة نفسها، ولا تنسخ الموارد الأصلية المتغيرة.

    عمليات التطبيق فقط هي ابدأ وتقدم وأوقف_الجلسة وأغلق_الجلسة وإعداد_الجلسة وحالة_الجلسة واستبدل_حالة_الجلسة والتقط_حالة_الجلسة واستبدل_حالة_الجلسة_إن_كانت_حالية. تأخذ عمليات المعالج سياق استدعائه: اقرأ_إعدادات واقرأ_حالة واستبدل_حالة والتقط_الحالة واستبدل_الحالة_إن_كانت_حالية وأوقف وتحقق_استجابة. يرفض المدقق استدعاءات التطبيق على مسار معالج حتى عبر دوال مساعدة. ينتهي السياق مع استدعائه ولا يخرج منه أو يدخل المجاميع. في برامج رايليب تكون الإعداد والطلب والخدمة والبدء والتقدم والإيقاف والإغلاق خارج الإطار، وتسمح دوال نسخ إعدادات التطبيق وحالته داخل الإطار. تعيد العمليات الممنوعة داخل إطار فعال http.invalid_order. يعيد سياق التطبيق غير الصالح http.invalid_context.

    يحوي حالة_جلسة / SessionStatus الثوابت جلسة_تعمل / SESSION_RUNNING وجلسة_تستكمل_الإغلاق / SESSION_DRAINING وجلسة_مغلقة / SESSION_CLOSED. تطلب أوقف_الجلسة التصريف؛ استمر في تقدم حتى الإغلاق. تنهي أغلق_الجلسة الصلاحية وتحرر المالك وتبطل كل نسخه. يعيد تقدم المغلقة حالتها المغلقة وينجح تكرار الإيقاف والإغلاق. تعيد دوال حالة المغلقة وإعداداتها http.closed_session. يبقى فشل المضيف المحرر بأمان مسجلا. فشل التحرير النهائي ليس نتيجة قابلة للاسترداد.

    تعيد اقرأ_حالة وحالة_الجلسة قيما منسوخة؛ لا ينشر تعديلها شيئا. يستبدل النشر غير المشروط الحالة كاملة. للنوع لقطة_حالة<S> / StateSnapshot<S> حقل قيمة / value للقراءة فقط وهوية جلسة وإصدار خفيان. تبقى اللقطة بعد الإغلاق ولا تمنح صلاحية السياق. يزيد كل نشر ناجح الإصدار. يعيد الاستبدال الشرطي نجاحا بقيمة صواب للقطة الحالية، ونجاحا بقيمة خطأ للقطة قديمة من الجلسة نفسها، أو فشلا بالرمز http.invalid_argument للقطة جلسة أخرى. القراءة والانتظار لطلب صادر ثم الاستبدال ليست ذرية؛ استخدم النشر الشرطي لكشف التغييرات أثناء الانتظار. راجع مثال الجلسة.

    الأنواع والدوال والقيم الافتراضية

    تأخذ وجهة<C,S> / Route<C,S> وموجه<C,S> / Router<C,S> و سياق<C,S> / Context<C,S> وسيطَي نوع محددين للتطبيق. يقبل C وS القيم القابلة للتخزين المسموحة، بما فيها السجلات والقوائم والنتائج والمخازن والمقابض والتسجيلات المدارة. يستبعد السياق الفعلي وقيم الدوال المكشوفة في كل عمق، بما فيه بيانات التسجيل. هذه عائلات توفرها المكتبة وليست أنواعا عامة يعرفها المستخدم. إذا لم يمكن استنتاج الوسيطين فاكتبهما صراحة، مثل ويب::أنشئ_موجه<منطقي,ص64>([]). يجب أن تستخدم الوجهات والمعالجات والإعدادات والحالة هويتَي النوع نفسيهما. يشترك استيراد الوحدة القانونية نفسها في هوية أنواعها ودوالها.

    المعالج دالة مستخدم مسماة على المستوى الأعلى بتوقيع دالة(طلب_وارد, سياق<C,S>) -> استجابة_خادم. مرر اسمها مثل handlers::handle دون استدعائها. لا تلتقط قيمة الدالة بيئة محلية. صدّر تعريفات الوحدة عبر شارك / share وتبقى بقية الأسماء خاصة. يمكن تخزين قيم الدوال العادية وتمريرها وإعادتها ومقارنتها بكلمات المساواة. يفحص المدقق كل الأهداف الممكنة عبر الوحدات ويرفض المسارات غير الآمنة أو الحاجبة. لا تجعل دالة تغليف استدعاء C عاديا أو قراءة سطر أو ملف حاجبة صالحة لمسار المعالج.

    السجلات التالية قيم عادية. تبقى بايتات الرسائل والترويسات صالحة بعد انتهاء الاتصال أو الخدمة. لا منشئ أو حقول عامة للسياق، ولا يدخل المجاميع أو يخرج من استدعائه أو يقارن أو يعبر استدعاء C عاديا. الوجهة والموجه قيمتان معتمتان يمكن الاحتفاظ بهما دون حقول عامة أو مقابس حية. حقل نجاح النتيجة نجاح / ok، ومحتواها قيمة / value، وخطؤها الخطأ / error، ورمزه الرمز / code. اقرأ المحتوى بعد فحص النجاح. الرسائل البشرية قد تتغير.

    أعلام خيارات العميل الثلاثة خطأ افتراضيا ومسار CA فارغ. قائمة مستمعي إعدادات الخادم فارغة افتراضيا ويجب إكمالها قبل الخدمة. يأخذ منشئ المستمع عنوانا ومنفذا 1..65535 ويعيد نقلا عاديا ومساري TLS فارغين. يبدأ منشئ طلب العميل بترويسات ومتن فارغين، ومنشئ الاستجابة بترويسات فارغة وعلم طول تمثيل غير مفعّل وطول صفر. تضبط الاستجابة النصية Content-Type المحدد وبايتات UTF-8 الدقيقة. لا معاملات اختيارية أو تحويل JSON ضمني.

    تتولد الجداول التالية من كتالوج التعريفات العامة المراجع. كتابة الأنواع مشتركة بين الصفحتين. الأحجام والأعداد ص64، والمدد ص64 بالمللي ثانية. حدود المجالات مشمولة ولا قيمة تعني بلا حد. MiB يساوي 1048576 بايت.

    ProgressBudget / ميزانية_تقدم

    English / العربية Type / النوع Default / الافتراضي Range / المجال
    max_instructions / حد_التعليمات i64 4096 1..1048576
    active_ms / زمن_العمل_مللي i64 2 1..1000
    wait_ms / زمن_الانتظار_مللي i64 0 0..1000

    Header / ترويسة

    English / العربية Type / النوع
    name / اسم string
    value / قيمة list<u8>

    QueryEntry / عنصر_استعلام

    English / العربية Type / النوع
    name / اسم string
    value / قيمة string
    has_equals / له_يساوي bool

    ClientRequest / طلب_عميل

    English / العربية Type / النوع
    method / طريقة string
    url / رابط string
    headers / ترويسات list<Header>
    body / متن list<u8>

    IncomingRequest / طلب_وارد

    English / العربية Type / النوع
    method / طريقة string
    target / هدف string
    authority / جهة string
    path / مسار string
    query / استعلام string
    has_query / له_استعلام bool
    headers / ترويسات list<Header>
    trailers / ترويسات_ختامية list<Header>
    body / متن list<u8>
    tls / اتصال_مشفر bool
    peer_address / عنوان_الطرف string
    local_address / عنوان_محلي string
    peer_port / منفذ_الطرف i64
    local_port / منفذ_محلي i64
    listener_index / فهرس_مستمع i64

    ClientResponse / استجابة_عميل

    English / العربية Type / النوع
    status / حالة i64
    headers / ترويسات list<Header>
    trailers / ترويسات_ختامية list<Header>
    body / متن list<u8>
    final_url / رابط_نهائي string
    redirect_count / عدد_تحويلات i64
    gzip_decoded / فك_ضغط_غزيب bool
    encoded_body_bytes / بايتات_متن_مرمز i64

    ServerResponse / استجابة_خادم

    English / العربية Type / النوع
    status / حالة i64
    headers / ترويسات list<Header>
    body / متن list<u8>
    has_representation_length / له_طول_تمثيل bool
    representation_length / طول_تمثيل i64

    Listener / مستمع

    English / العربية Type / النوع
    address / عنوان string
    port / منفذ i64
    tls / اتصال_مشفر bool
    certificate_file / ملف_شهادة string
    key_file / ملف_مفتاح string

    ClientOptions / خيارات_عميل

    English / العربية Type / النوع
    limits / حدود MessageLimits
    timeouts / مهل Timeouts
    follow_redirects / اتبع_تحويلات bool
    decode_gzip / فك_غزيب bool
    use_private_ca / استخدم_مرجع_خاص bool
    ca_file / ملف_مرجع string

    ServerConfig / إعدادات_خادم

    English / العربية Type / النوع
    listeners / مستمعون list<Listener>
    limits / حدود MessageLimits
    timeouts / مهل Timeouts

    RuntimeConfig / إعدادات_تنفيذ_ويب

    English / العربية Type / النوع Default / الافتراضي Range / المجال
    vm_memory_bytes / بايتات_ذاكرة_آلة i64 268435456 1048576..1073741824
    backend_memory_bytes / بايتات_ذاكرة_خلفية i64 134217728 1048576..1073741824
    inbound_connections / اتصالات_واردة i64 128 1..4096
    outbound_connections / اتصالات_صادرة i64 32 1..1024
    idle_client_connections / اتصالات_عميل_خاملة i64 16 1..outbound_connections / اتصالات_صادرة
    queued_requests / طلبات_منتظرة i64 32 1..1024
    live_handlers / معالجات_حية i64 32 1..1024
    outbound_operations / عمليات_صادرة i64 32 1..1024
    max_listeners / أقصى_مستمعين i64 8 1..64
    max_routes / أقصى_وجهات i64 1024 1..16384
    trust_configurations / إعدادات_ثقة i64 16 1..128
    tls_file_bytes / بايتات_ملف_تشفير i64 1048576 1..16777216
    query_bytes / بايتات_استعلام i64 8192 1..1048576
    query_entries / عدد_عناصر_استعلام i64 1024 1..16384

    MessageLimits / حدود_رسالة

    English / العربية Type / النوع Default / الافتراضي Range / المجال
    target_bytes / بايتات_هدف i64 8192 1..1048576
    header_bytes / بايتات_ترويسات i64 32768 1..1048576
    header_fields / عدد_ترويسات i64 100 1..4096
    chunk_line_bytes / بايتات_سطر_جزء i64 1024 1..65536
    body_bytes / بايتات_متن i64 16777216 1..1073741824
    decoded_body_bytes / بايتات_متن_مفكوك i64 16777216 1..1073741824
    informational_responses / عدد_استجابات_تمهيدية i64 8 1..64
    max_redirect_hops / أقصى_تحويلات i64 5 0..32

    Timeouts / مهل

    English / العربية Type / النوع Default / الافتراضي Range / المجال
    total_ms / مهلة_كلية i64 30000 1..86400000
    connect_ms / مهلة_اتصال i64 10000 1..86400000
    tls_ms / مهلة_تشفير i64 10000 1..86400000
    headers_ms / مهلة_ترويسات i64 10000 1..86400000
    body_ms / مهلة_متن i64 30000 1..86400000
    write_ms / مهلة_كتابة i64 10000 1..86400000
    idle_ms / مهلة_خمول i64 30000 1..86400000
    drain_ms / مهلة_تصريف i64 5000 1..86400000
    cleanup_ms / مهلة_تنظيف i64 1000 1000..86400000

    Functions / الدوال

    English / العربية Signature / التوقيع
    progress_budget / ميزانية_التقدم () -> ProgressBudget
    runtime_config / إعدادات_تنفيذ () -> RuntimeConfig
    message_limits / حدود_رسائل () -> MessageLimits
    timeouts / مهل_افتراضية () -> Timeouts
    client_options / خيارات_طلب () -> ClientOptions
    server_config / إعدادات_خدمة () -> ServerConfig
    listener / أنشئ_مستمع (string, i64) -> result<Listener>
    configure / اضبط (RuntimeConfig) -> result<unit>
    client_request / أنشئ_طلب (string, string) -> result<ClientRequest>
    request / اطلب (ClientRequest, ClientOptions) -> result<ClientResponse>
    response / أنشئ_استجابة (i64, list<u8>) -> result<ServerResponse>
    text_response / استجابة_نصية (i64, string, string) -> result<ServerResponse>
    encode_utf8 / رمز_نص (string) -> list<u8>
    decode_utf8 / فك_نص (list<u8>) -> result<string>
    header / أنشئ_ترويسة (string, list<u8>) -> result<Header>
    text_header / ترويسة_نصية (string, string) -> result<Header>
    header_values / قيم_ترويسة (list<Header>, string) -> result<list<list<u8>>>
    query_entries / عناصر_استعلام (string) -> result<list<QueryEntry>>
    query_values / قيم_استعلام (list<QueryEntry>, string) -> list<string>
    snapshot_state / التقط_الحالة (Context<C,S>) -> StateSnapshot<S>
    snapshot_session_state / التقط_حالة_الجلسة (Session<C,S>) -> result<StateSnapshot<S>>
    replace_session_state / استبدل_حالة_الجلسة (Session<C,S>, S) -> result<unit>
    replace_state_if_current / استبدل_الحالة_إن_كانت_حالية (Context<C,S>, StateSnapshot<S>, S) -> result<bool>
    replace_session_state_if_current / استبدل_حالة_الجلسة_إن_كانت_حالية (Session<C,S>, StateSnapshot<S>, S) -> result<bool>
    start / ابدأ (ServerConfig, Router<C,S>, C, S) -> result<Session<C,S>>
    session_config / إعداد_الجلسة (Session<C,S>) -> result<C>
    session_state / حالة_الجلسة (Session<C,S>) -> result<S>
    close_session / أغلق_الجلسة (Session<C,S>) -> result<unit>
    progress / تقدم (Session<C,S>, ProgressBudget) -> result<SessionStatus>
    stop_session / أوقف_الجلسة (Session<C,S>) -> result<unit>
    route / أنشئ_وجهة (string, string, fn(IncomingRequest, Context<C,S>) -> ServerResponse) -> result<Route<C,S>>
    router / أنشئ_موجه (list<Route<C,S>>) -> result<Router<C,S>>
    with_catch_all / أضف_معالج_عام (Router<C,S>, fn(IncomingRequest, Context<C,S>) -> ServerResponse) -> result<Router<C,S>>
    serve / اخدم (ServerConfig, Router<C,S>, C, S) -> result<unit>
    read_config / اقرأ_إعدادات (Context<C,S>) -> C
    read_state / اقرأ_حالة (Context<C,S>) -> S
    replace_state / استبدل_حالة (Context<C,S>, S) -> unit
    stop / أوقف (Context<C,S>) -> unit
    check_response / تحقق_استجابة (Context<C,S>, IncomingRequest, ServerResponse) -> result<unit>

    البايتات والترويسات والاستعلام

    المتن قيمة كاملة مخزنة في قائمة<ط8>. ينسخ رمز_نص UTF-8 بدقة، ويرفض فك_نص النص غير الصالح بالرمز http.invalid_utf8. لا يحذفان BOM أو NUL ولا يطبّعان Unicode أو يخمنان الترميز أو يستبدلان البايتات السيئة. JSON نص ونوع محتوى صريحان، ولا توفر المكتبة محللا أو مولّدا له.

    الترويسات حقول مرتبة قابلة للتكرار، بأسماء ASCII token وقيم بايتات. تقبل القيم HTAB وASCII القابل للطباعة و0x80..0xFF، وترفض NUL وCR وLF وDEL وبقية التحكم. يحذف التحليل SP وHTAB المحيطين ويحتفظ بالداخل والترتيب وحالة أحرف الاسم. يعيد قيم_ترويسة كل المطابقات بالترتيب دون اعتبار لحالة الاسم، ولا يجمعها بفواصل أو يفك نصها. تبقى Set-Cookie المكررة منفصلة، وكذلك الترويسات الختامية عن الأولى.

    لا يضبط التطبيق Content-Length أو Transfer-Encoding أو Connection أو Keep-Alive أو Proxy-Connection أو TE أو Trailer أو Upgrade أو Expect في الرسائل الصادرة، ولا Host في طلب العميل. تستنتج المكتبة Host والتأطير وتضيف Date لاستجابة الخادم عند غيابه. Content-Encoding اختيار صريح، ولا ضغط تلقائيا للخادم. يفشل تعارض الأطوال أو جمع Transfer-Encoding مع Content-Length أو طي الحقول أو التأطير الملتبس. تبقى ترويسات التحكم الواردة بيانات قابلة للقراءة. لا تنقل طول المتن المضغوط أو ترويسة ترميزه عميانا إلى استجابة جديدة.

    URL العميل URI مطلق ASCII لـHTTP أو HTTPS. رمز النص غير ASCII في المسار والاستعلام بنسبة مئوية، وقدّم الأسماء الدولية بصيغة A-label. تدعم أسماء DNS وIPv4 وIPv6 بين قوسين مربعين. ترفض بيانات المستخدم والفراغ والتحكم والهروب السيئ والمنفذ غير الصالح ومعرفات منطقة IPv6. يحذف fragment ويصبح المسار الفارغ /. يحتفظ الطلب الأول بالنقاط والشرطات وهروب النسبة. يحذف رابط_نهائي fragment ويصغر أحرف البروتوكول واسم DNS ويحذف المنفذ الافتراضي ويستعمل / للفارغ، مع حفظ وجود الاستعلام وكتابة الهروب.

    يحفظ هدف الطلب ترميز origin-form أو absolute-form لـHTTP وHTTPS، ويقبل OPTIONS أيضا *. يُستخرج المسار والاستعلام قبل الفك. تأتي جهة من الهدف المطلق أو Host الصالح. يميز له_استعلام بين /p و/p?. لا تغير الترويسات الممررة هذه الحقول أو معلومات TLS والعنوان الفعلية. فهارس المستمعين تبدأ من صفر. يفشل الهدف غير الصالح قبل المعالج.

    يقسم عناصر_استعلام النص الخام عند & وأول = قبل فك النسبة مرة واحدة. لا تمرر ? الأول. يبقى + علامة جمع و; بيانات، وتبقى %26 داخل العنصر وتصبح %252F القيمة %2F. لا تنتج المقاطع الفارغة عناصر. يختلف flag عن flag= بحقل له_يساوي، ويكون اسم =x فارغا. يحفظ تكرار الأسماء الترتيب، و%00 قيمة NUL صالحة. يبقى الاستعلام الخام متاحا إذا فشل الهروب أو UTF-8 المفكوك. يطابق قيم_استعلام الاسم المفكوك تماما ويعيد قيمة فارغة للمفتاح دون مساواة.

    التوجيه والاستجابات

    الطرق ASCII tokens غير فارغة وحساسة لحالة الأحرف. لا يدعم CONNECT أو ترقية البروتوكول. تتطابق المسارات المرمزة تماما، بما فيه حالة الهروب والشرطات والنقاط. تختلف /a%2Fb و/a%2fb و/a/b و/a/../b. تبدأ الوجهة بـ/ دون استعلام أو fragment وبهروب صالح، و* لـOPTIONS فقط. يفشل تكرار زوج الطريقة والمسار أو إضافة معالج عام ثان.

    الأولوية للوجهة المطابقة، ثم HEAD باستخدام GET، ثم 405 لمسار معروف، ثم المعالج العام للمسار المجهول أو 404 الافتراضي. يتقدم HEAD الصريح. ترتب Allow الطرق حسب البايتات وتضيف HEAD عند وجود GET دون اختراع OPTIONS. المتنان الافتراضيان Not found وMethod not allowed مع text/plain; charset=utf-8. لا يصل طلب غير صالح إلى المعالج العام.

    حالات المعالج النهائية 200..599. استجابة عميل مكتملة 404 أو 500 نتيجة ناجحة. يستهلك الردود التمهيدية ضمن الحدود، ويرفض 101 وإصدارات السلك غير المدعومة. يحذف HEAD المتن بعد الفحص والمحاسبة. يحسب بديل GET طول المتن، ويمكن لـHEAD الصريح أو العام التصريح بطول تمثيل أو حذفه. يجب أن يطابق الطول المصرح متن HEAD غير الفارغ. يتطلب علم طول التمثيل غير المفعّل طولا صفرا.

    تتطلب 204 و205 و304 متنا فارغا. تحذف 204 Content-Length وتضع 205 صفرا، ويمكن لـ304 التصريح بطول تمثيل أو حذفه. يسمح بهذا الطول فقط لـHEAD و304 ويجب ألا يكون سالبا. تتقدم قواعد الحالة على بديل HEAD. يعيد العميل في الردود دون متن متنا فارغا وعدد بايتات مرمزة صفرا وعلم gzip غير مفعّل، دون حجز أو فك التمثيل الافتراضي. ما زالت 205 تتطلب تأطيرا صالحا لرسالة فارغة.

    يفحص تحقق_استجابة حدود الخدمة والبيانات دون إرسال، ويقبل طلب استدعائه فقط وفق هويته المخفية. تحتفظ النسخ بالهوية ولا يغير تعديل الطريقة العامة سلطة HEAD الفعلية. يفشل طلب استدعاء آخر أو سجل أنشأه التطبيق بالرمز http.invalid_argument. يعاد الفحص عند العودة. تنتج الاستجابة غير الصالحة أو المتجاوزة 500 عاما محدودا مع إغلاق الاتصال. يبقى فخ لبات نهائيا.

    قبل المعالج، يستخدم الطلب السيئ 400، والهدف الكبير 414، والترويسات الكبيرة 431، والمتن الكبير 413، والنقل أو CONNECT غير المدعوم 501، والتوقعات 417، وإصدار HTTP غير المدعوم 505. يتلقى Expect: 100-continue الصالح المقبول 100 قبل المتن. قد تعيد مهلة المرحلة 408 ما دامت الكلية حية، ويعيد الطلب المكتمل دون سعة انتظار أو معالجة 503. تغلق الاتصالات المرفوضة، وتكون متون الرفض الثابتة فارغة. قد يفشل قبول النقل أو TLS أو انتهاء الأب أو قطع الاتصال أو نفاد الميزانية دون رد HTTP.

    التحويلات وgzip وإعادة الاستخدام

    اتباع التحويلات وفك gzip غير مفعّلين افتراضيا. يتبع التفعيل 301/302/303/307/308 داخل origin واحد وفق البروتوكول والمضيف والمنفذ الفعلي. تحل المراجع النسبية مع معالجة النقاط الحرفية. تحول 301 و302 POST إلى GET وتحذف متنه وتبقي بقية الطرق. تحافظ 303 على HEAD أو تختار GET وتحذف المتن. تعيد 307 و308 الطريقة والبايتات نفسها. عند حذف المتن تحذف Content-Type وContent-Encoding وContent-Language وContent-Location وContent-Range وDigest وContent-Digest ويعاد اشتقاق التأطير.

    غياب Location يعيد الرد. يفشل تكرارها أو خطؤها أو عدم صلاحية وجهتها. Location النسبي الفارغ صالح لكنه محدود بعدد الخطوات. تعاد الوجهة الصالحة خارج origin دون اتباع، بما فيه HTTPS إلى HTTP. يعد عدد_تحويلات الانتقالات المتبعة ورابط_نهائي آخر URL مطلوب. تشترك الخطوات في المهلة الكلية الأصلية. لا إعادة تلقائية لطلب التطبيق عند فشل النقل أو اتصال معاد الاستخدام.

    عند تعطيل الفك تعاد البايتات المرمزة دون توليد Accept-Encoding. عند تفعيله تولد Accept-Encoding: gzip وترفض قيمة التطبيق لها. غياب الترميز أو identity وحدها يبقي البايتات. يفك gzip واحد دون اعتبار لحالة الاسم. يفشل التراكم والتكرار والترميز الآخر. يفحص اكتمال الأعضاء والبصمات ويقبل الأعضاء المتتابعة الصالحة ويرفض البتر والبيانات الزائدة. تحتفظ الترويسات والختامية ببيانات الضغط الأصلية. لا يعد بايتات_متن_مرمز تأطير النقل، ويكون متن مفكوكا فقط عندما يكون فك_ضغط_غزيب مفعّلا. يطبق حدي المتن المرمز والمفكوك قبل قبول البايتات التالية.

    إعادة الاستخدام محدودة ومملوكة للتنفيذ. يشمل مفتاحها origin وهوية ثقة TLS الفعلية. يجب استهلاك التأطير الكامل الصالح أو إغلاق المقبس. تنتهي الاتصالات الخاملة أو تطرد. تحرر عودة اخدم العادية الخادم وأبناءه، وقد تبقى موارد عميل مستقلة حتى نهاية التنفيذ. لا مقبض عام للمقبس أو التيار أو إغلاق العميل.

    الحالة والحدود والمهل

    تعيد اقرأ_إعدادات واقرأ_حالة نسختين من القيم. لا ينشر تعديل النسخة حالة. تنشر استبدل_حالة استبدالا كاملا متسلسلا، ولا تجعل القراءة والانتظار والاستبدال ذرية. تحتفظ المقابض المدارة في النسخ بالمالك الأصلي نفسه دون نسخ حالته الأصلية القابلة للتغيير. البايتات المستخرجة قيم مستقلة. تنتهي سلطة السياق بانتهاء استدعاء المعالج.

    يمكن لـاضبط استبدال إعدادات التنفيذ الصالحة قبل أول محاولة شبكة متحققة. تثبت المحاولة الإعدادات حتى عند فشل البدء. لا تبدأ الأدوات النقية الشبكة. يسمح التنفيذ بمحاولة مجتازة للتحقق واحدة عبر اخدم أو ابدأ، حتى عند فشل البدء بعدها. تعمل طلبات العميل قبل الخدمة وفيها وبعدها. تنسخ الخيارات والمستمعون والموجه والإعدادات لكل عملية أو خدمة.

    ذاكرة الآلة 256 MiB والخلفية المشتركة 128 MiB افتراضيا. تشمل محاسبة الأصل السعات المحتفظ بها والقمم المؤقتة وحالة TLS وDNS والفك والأحداث. تحسب قيم لبات الحية ضمن الآلة. مخازن المقابس في النواة خارج محاسبة الحجز، لكن المقابس المقبولة والخاملة ضمن الأعداد المحدودة. لا تتجاوز قائمة انتظار الاستماع المطلوبة لكل مستمع طلبات_منتظرة وقد يخفضها المضيف. يرفض امتلاء الانتظار أو المعالجات أو العمليات الصادرة القبول بدلا من إنشاء طوابير مخفية. قد تقيد حدود المضيف والذاكرة الفعلية إعدادا عدديا صالحا؛ لا يحجز الإعداد موارده ولا يضمن قبول العمل. يجب أيضا ألا تتجاوز اتصالات_عميل_خاملة قيمة اتصالات_صادرة. عند خفض سعة الصادر إلى أقل من 16، اخفض عدد الخامل الافتراضي معها وإلا أعادت اضبط الرمز http.invalid_argument. يثبت المثال المفحوص limits.aspl الرفض والتصحيح.

    المهل زمن رتيب. تبدأ كلية العميل عند الاستدعاء وكلية الخادم عند أول بايت طلب وتشمل الانتظار وCPU والطلبات الصادرة والكتابة. تشمل مهلة الاتصال DNS وTCP وTLS معا. قد تقصر مهلة TLS أو الترويسات أو المتن أو الكتابة المهلة الأصلية ولا تمددها. يقيد الأب أبناءه. تسبق مصافحة TLS للخادم كلية أول بايت. تغطي مهلة الخمول غياب النشاط والتصريف انتظار الإيقاف. يستخدم التنظيف مهلة أصلية واحدة لكل الموارد في نطاق الملكية، افتراضها وأدناها 1000 ms. الاستقصاء كل 10 ms هدف استجابة وليس ضمانا للزمن الحقيقي.

    يلغي انتهاء الأب أو قطع الاتصال أو انتهاء التصريف استدعاءه وأبناءه ويلغي النتائج المتأخرة ونشر الحالة، وتبقى المعالجات الأخرى حية. لا يسلم نتيجة فاشلة إلى الأب الملغى. إغلاق جهة استقبال فقط لا يثبت قطع الاتصال. يصرّف الإيقاف الصريح ويعود عاديا بعد التحرير. الإشارة الأولى تصرّف ثم تنهي التنفيذ بالحالة 7 والثانية تتجاوز التصريف. حالة الفخ 5 ولا يصبح 500 تلقائيا. تبقى حدود الآلة وفشل الحجز أو الثوابت وفشل التنظيف المحدود نتائج نهائية.

    الإعدادات والبدء

    استخدم configure(RuntimeConfig) قبل أول محاولة شبكة اجتازت التحقق. تعيد المجالات غير الصالحة أو idle_client_connections > outbound_connections الرمز http.invalid_argument دون تثبيت الإعدادات. تثبت محاولات العميل أو الخدمة المجتازة للتحقق الإعدادات حتى لو فشل بدء النقل؛ يعيد الضبط اللاحق http.already_started. لا تهيئ الأدوات المساعدة والفحص والبناء دون شبكة HTTP. تنسخ الخيارات والمستمعين وإعدادات التطبيق ولا تعمل كإعدادات قابلة للتغيير المباشر.

    يتطلب Listener::tls=false مساري شهادة ومفتاح فارغين؛ ويتطلب true كليهما غير فارغ. منفذ المستمع 1..65535، ومستمع IPv6 خاص بـIPv6. يستهلك serve أو start المجتاز للتحقق فرصة الخدمة الوحيدة للتنفيذ. يحرر فشل البدء المستمعين والعمل المنشأين قبل إعادة رمزه المستقر. صحح المدخلات وابدأ تنفيذا جديدا. راجع إعدادات النشر ومثال الحدود.

    الثقة الافتراضية والخاصة

    يختار ClientOptions الافتراضي اكتشاف CA المضيف، مع use_private_ca=false وca_file فارغ. يتطلب use_private_ca=true مسار CA خاص غير فارغ بصيغة PEM ويحل محل مخزن المضيف. يعطي الجمع غير الصالح للعلم والمسار http.invalid_argument. تعطي الثقة المختارة الغائبة أو المشوهة أو غير المقروءة أو المتجاوزة للحجم http.ca_load_failed قبل الاتصال؛ وتعطي الثقة المحملة غير المتعلقة http.tls_verify_failed أثناء التحقق. لا تعطل هذه الخيارات فحص السلسلة والتاريخ والهوية.

    أول حزمة افتراضية موجودة هي المرجع. لا ينتقل الاختيار من حزمة سيئة إلى التالية ولا يغير SSL_CERT_FILE أو SSL_CERT_DIR الاكتشاف. عند غياب الحزم المرشحة كلها يطبق اكتشاف مجلد محدود. تثبت الثقة المحللة بنجاح للتنفيذ. راجع ترتيب الاكتشاف الدقيق والتجهيز المحلي؛ لا تستنتج أن كل ترتيب ثقة لمضيف يعمل.

    طلبات الطرف العلوي المرتبطة بالسياق

    يتطلب request(ClientRequest, ClientOptions) داخل المعالج إطار طلبه الحي. تعيد read_config(ctx) إعدادات تطبيق الخدمة المنسوخة؛ توفر في عائلة الخدمة رابط الطرف العلوي ومسار CA الصريح. شهادة ومفتاح الخادم الوارد مستقلان عن ثقته الصادرة. يمرر المعالج المفحوص الحالة وبايتات المتن عمدا دون نسخ بيانات تمثيل الطرف المقابل المضغوط.

    تبقى ردود 404 و500 الكاملة نتائج عميل ناجحة. يصل فشل الابن القابل للاسترداد إلى الأب الحي كنتيجة عادية؛ يحول المثال رمزه المستقر إلى متن 502. ينقض انتهاء مهلة الأب أو اكتشاف انقطاعه أو انتهاء التصريف عمل الابن ويسقط خرج المعالج ونشره المتأخرين بدلا من تسليم نتيجة فاشلة للمعالج الملغى. لا تمدد مهل الابن مهلة الأب. لا إعادة محاولة تلقائية أو وكيل صادر أو تراجع عن آثار الطرف المقابل. اتبع تمرين الطرف العلوي TLS الكامل.

    مدخلات TLS

    يفحص عميل TLS 1.2 و1.3 السلسلة والتواريخ وSAN للاسم أو IP دائما. يحمل الخادم سلسلة PEM ومفتاحا غير مشفر مطابقا لكل مستمع. تدعم مفاتيح rsaEncryption العادية 2048..8192 بت وأسّا فرديا أكبر من واحد لا يتجاوز 32 بت. تدعم منحنيات P-256 وP-384 وP-521 المسماة. تدعم توقيعات RSA-PSS بمفتاح RSA عادي، وترفض مفاتيح rsassaPss المقيدة وEd25519 وEd448 والمنحنيات الأخرى ومعاملات المنحنى الصريحة.

    حد ملف TLS الافتراضي 1 MiB ومجاله 1..16 MiB. للمفتاح أيضا حد 65536 بايت، وللمسار أقل من 4096 بايت. حد كتلة PEM المحلية 65536 بايت وشهادة DER 49152 بايت ورسالة مصافحة شهادات الطرف المقابل 524288 بايت. حد شهادات الثقة 8192 بما فيها التكرار ولسلسلة المستمع ثماني شهادات ولـCA الوسيطة ست. يفحص مجلد الثقة حتى 16384 عنصرا و8192 ملفا عاديا فريدا. راجع اكتشاف الثقة وتوقيت فشل البدء.

    أخطاء مستقرة قابلة للاسترداد

    الرموز ASCII مستقلة عن لغة التشخيص. تعيد المنشئات والأدوات وعمليات الشبكة نتائج عادية قابلة للاسترداد للإخفاقات المتوقعة التالية. قد يفشل الطلب بعد تنفيذ الطرف المقابل له، ولا ضمان للتراجع هناك. ينظف فشل مضيف الخدمة غير المتوقع مواردها قبل عودة اخدم بالرمز http.host_failure.

    Code / الرمز Meaning / المعنى
    http.invalid_argument إعدادات أو مجال أو مستمع أو جمع خيارات غير صالح
    http.invalid_url URL عميل غير صالح
    http.invalid_header ترويسة صادرة غير صالحة أو ممنوعة
    http.invalid_route طريقة أو مسار أو تسجيل غير صالح
    http.duplicate_route زوج طريقة ومسار مكرر أو معالج عام ثان
    http.invalid_response حالة أو متن أو بيانات تمثيل المعالج غير صالحة
    http.invalid_utf8 بايتات التحويل أو الاستعلام ليست UTF-8 صالحا
    http.invalid_query هروب نسبة غير صالح
    http.query_limit تجاوز بايتات الاستعلام أو عدد عناصره
    http.resolve_failed فشل حل اسم العميل أو المستمع
    http.connect_failed فشل إنشاء TCP أو النقل القائم
    http.tls_verify_failed فشل فحص السلسلة أو التواريخ أو SAN أو الهوية
    http.tls_handshake_failed فشل تفاوض TLS غير التحقق والمهلة
    http.ca_load_failed ثقة غائبة أو سيئة أو غير مقروءة أو كبيرة
    http.tls_config_failed سلسلة أو مفتاح خادم سيئ أو مشفر أو غير مطابق
    http.timeout انتهاء مهلة عميل كلية أو مرحلية مع بقاء المستدعي حيا
    http.cancelled إلغاء محلي لابن مع بقاء المستدعي حيا
    http.parse_failed صياغة أو تأطير أو ختامية غير صالحة أو ملتبسة
    http.truncated_body انتهى متن ذو طول أو أجزاء قبل اكتماله
    http.unsupported_protocol إصدار سلك أو ترقية أو نفق أو نقل غير مدعوم
    http.unsupported_content_encoding ترميز متراكم أو مكرر أو غير مدعوم أثناء الفك
    http.decode_failed فشل بصمة gzip أو بتره أو عضوه أو بياناته الزائدة
    http.body_limit تجاوز المتن المرسل أو المستلم المرمز حده
    http.decoded_body_limit تجاوز المتن المفكوك حده
    http.header_limit تجاوز حد الترويسات أو الحقول أو سطر الجزء أو الردود التمهيدية
    http.target_limit تجاوز URL أو هدف الطلب حده
    http.resource_limit نفاد ميزانية الخلفية أو سعة إعدادات أو مخبأ محدود
    http.overloaded غياب سعة قبول عميل أو خادم
    http.redirect_invalid قيم Location متعددة أو سيئة أو غير قابلة للاستخدام
    http.redirect_limit تجاوز الانتقال المؤهل التالي حد التحويلات
    http.bind_failed تعذر ربط كل عناوين المستمع المحلولة
    http.listen_failed تعذر بدء الاستماع على عنوان مربوط
    http.already_started إعدادات تنفيذ ثابتة أو استدعاء خدمة أو بدء ثان أو متداخل
    http.host_failure فشل مضيف أو خدمة غير متوقع بعد التنظيف
    http.closed_session دوال حالة التطبيق أو إعداداته بعد الإغلاق المشترك
    http.invalid_context عملية خارج سياق التطبيق المسموح
    http.invalid_order عملية تستلزم خارج الإطار أثناء إطار رسم فعال

    المستبعدات الحالية

    HTTP/1.1 أصلي فقط. لا شبكة للمتصفح أو التضمين الخاص، ولا HTTP/2 أو HTTP/3 أو CONNECT أو WebSocket أو ترقية أخرى، ولا واجهة بث للمتن أو أدوات multipart أو SSE أو تحليل وتوليد JSON أو معاملات وجهات مسماة أو middleware أو إدارة تلقائية للكوكيز أو المصادقة أو وكيل صادر أو تحويل IDN تلقائي أو ضغط خادم أو إعادة تحميل شهادة أو اختيارها بـSNI أو مصادقة بشهادة عميل أو اتباع تحويلات تلقائي خارج origin.

    استخدم دليل النشر الحالي لمسارات 0.7.0 الأصلي المنشور. يبقى مصدر النشر الخام السابق (يفتح في نافذة جديدة) بنطاق إصداره السابق.

    تصفح الصفحات