سلسلة استعلام

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

إطار|شريط عنوان في موزيلا فيرفكس يحتوي على عنوان إنترنت وسلسلة استعلام title=Main_page&action=raw

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

 التركيب 
العنوان النموذجي يحتوي على سلسلة الاستعلام (Query string) كما يلي:

http://server/path/program?query_string

عندما يستلم الملقم طلب لهذه الصفحة، ويدير البرنامج (إذا كان مكونا للقيام بذلك)، تمرر الكويري سترينق (Query string) دون تغيير على البرنامج. علامة الاستفهام تستخدم كفاصل وليس كجزء من سلسلة الاستعلام.

الرابط في صفحة على شبكة الإنترنت يمكن أن يكون له عنوان يحتوي على الكويري الكويري سترينق (Query string). ومع ذلك، فإن الاستخدام الرئيسي لسلاسل الاستعلام هو إحواء محتوى شكل أتش تي أم أل، والمعروف أيضا بنموذج الويب. على وجه الخصوص، عندما النموذج يحتوي على field 1 حقول field 1، field 2، field 3 ه المقدمة، ومحتوى الحقول المشفرة كما هو الكويري سترينق (Query string) على النحو التالي:

field1=value1&field2=value2&field3=value3.
 الكويري سترينق (Query string) تتكون من سلسلة أزواج قيم الحقول.
 كل أزواج القيم تفصل بالرمز يساوي.
 سلسلة الأزواج مفصولة برمز العطف، '&' أو فاصلة منقوطة، '؛'.

لكل حقل من النموذج، الكويري سترينق (Query string) تحتوي على حقل زوج = القيمة. نماذج الويب يمكن أن تشمل المجالات التي تكون غير مرئية للمستخدم؛ هذه الحقول المضمنة في سلسلة الاستعلام عندما يكون النموذج المقدم.

هذه ' اسم ثم علامة المساواة ثم القيمة ثم رمز العطف أو الفاصلة المنقوطة' الاتفاقية هو توصية رابطة الشبكة العالمية  W3C توصي  أن جميع خوادم الويب تدعم فواصل الفواصل المنقوطة في مكان فواصل رمز العطف.

من الناحية التقنية، محتوى نموذج الويب فقط يتم ترميزه ك كويري سترينق (Query string)عندما تكون الميثود المستخدمة "GET"، يتم استخدام نفس الكيفية عندما تكون الميثود المستخدمة "POST" ولكن النتيجة لا يتم إرسالها على شكل سلسلة الاستعلام، وهذا هو، لا يتم إضافته إلى موقع العمل في النموذج. غير ذلك، يتم إرسال السترينق كما نص الطلب.

 عنوان ترميز 

بعض الرموز لا يمكن أن تكون جزء من العنوان (على سبيل المثال، المسافة) وبعض الرموز الأخرى لها معنى خاص في العنوان: على سبيل المثال، فإن الرمز # يمكن استخدامها لتحديد المزيد من الفقرة الفرعية (أو جزء منه) من وثيقة، وحرف = يستخدم لفصل الاسم عن القيمة. الكويري سترينق (Query string) قد تحتاج إلى تحويلها لتلبية هذه القيود. ويمكن القيام بذلك باستخدام المخطط المعروف رابط الترميز.

على وجه الخصوص، ترميز سلسلة الاستعلام يستخدم القواعد التالية:
 أحرف (من الألف إلى الياء والألف إلى الياء)، أرقام (0-9) والرموز '.'، '--'، '~' و'_' يتم تركها كما هي
 المسافة يتم ترميزهأعلى النحو'+'
 جميع الرموز الأخرى يتم ترميزها «%FFfبالهكس» مع أي من رموز اللا «اسكي» تشفر أولا ك UTF-8 (أو طرق الترميز المحددة الأخرى)

ترميز المسافة على النحو '+' واختيار الرموز "as-is" يميز هذا الترميز uن ال RFC1738.

 RFC 
كما تم تعريفها في ، العنوان من مخطط ال http يمكن أن يحتوي على searchpart"{/1"} التالية بقية العنوان، وفصلها عنه بال"?" محرف الجرعة 3986 تنص على أنه عنصر الاستعلام من العنوان هو الجزء الموجود ? ونهاية أوري أو الحرف # مصطلح الاستعلام السلسلة ذات الاستعمال المشترك للإشارة إلى هذا الجزء من أجل قضية المتشعب عناوين المواقع.

 مثال 
إذا كان النموذج هو مضمن في صفحة أتش تي أم أل على النحو التالي:
&lt;source lang="html4strict"&gt;
<formaction="cgi-bin/test.cgi" method="GET">
 <inputtype="text" name="first">
 <inputtype="text" name="second">
 <inputtype="submit">
 شكل
&lt;/source&gt;

وتدرج مستخدم السلاسل «هذا هو حقل» و«كان واضحا (بالفعل)؟» في حقلي النص ويضغط على زر الإرسال، سيكون من test.cgi البرنامج تلقي الكويري سترينق (Query string) التالية:
 أول = هذا هو + + حقل + & الثانية = كان ذلك + + + واضحة 28already% 29% 3F
 إذا كان النموذج يتم معالجتها على الملقم من قبل CGIالسيناريو، قد النصي يحصلن عادة على الكويري سترينق (Query string) عن تهيئة بيئة المتغير المسمى QUERY_STRING

 التتبع 
البرنامج الذي يتلقي سلسلة الاستعلام (Query string) يمكن أن يتجاهل كل أو جزء منه. إذا طلبت عنوان يتوافق مع ملف وليس لأحد البرامج، كل سلاسل الاستعلام (Query string) يتم تجاهلها. ولكن، بغض النظر عما إذا كان يتم استخدام سلسلة الاستعلام أو لا، عنوان الموقع كله بما في ذلك سلسلة الاستعلام يتم تخزينها في سجل خادم الملفات.

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

على سبيل المثال، عندما صفحة على شبكة الإنترنت يحتوي على ما يلي هو المطلوب:
&lt;source lang="html4strict"&gt;
 <ahref="frank.html"> انظر صفحتي!بلا
 <ahref="ciccio.html"> صفحتي أفضل </ أ>
&lt;/source&gt;

سلسلة فريدة من نوعها، مثل sdfsd23423 يتم اختياره، ويتم تعديل الصفحة على النحو التالي:
&lt;source lang="html4strict"&gt;
 <أ href = "frank.html؟sdfsd23423 "> انظر صفحتي!بلا
 <أ href = "ciccio.html؟sdfsd23423 "> الألغام هو أفضل </ أ>
&lt;/source&gt;

الإضافة إلى الكويري سترينق (Query string) لا تغيير في شكل الصفحة التي يتم عرضها للمستخدم. عندما يقوم المستخدم بما يلي، على سبيل المثال، اختار الرابط الأول، المستعرض يطلب frank.html?sdfsd23423 إلى الخادم، والذي يتجاهل مايتبع ? ويرسل الصفحة frank.html كما هو متوقع، إضافة سلسلة الاستعلام إلى الرابط كذلك.

بهذه الطريقة، فإن أي طلب صفحة لاحقة من هذا المستخدم تحمل نفس الكويري سترينق (Query string) sdfsd23423، مما يجعل من الممكن أن يثبت أن كل هذه الصفحات التي تم عرضها من قبل المستخدم نفسه. الكويري سترينق (Query string) غالبا ما تستخدم بالمشاركة مع منارة الويب.

الاختلافات الرئيسية بين الكويري سترينق (Query string) التي تستخدم للتعقب وال HTTP الكوكيز هي ما يلي:
 الكويري سترينق (Query string) تشكل جزء من العنوان، وبالتالي فهي تشمل ما إذا كان المستخدم يحفظ أو يرسل عنوان لمستخدم آخر؛ الكوكيز لا يمكن الحفاظ عليه عبر جلسات التصفح، ولكن لا يتم حفظها أو إرسالها مع عنوان الموقع.
 إذا كان المستخدم يصل إلى نفس الخادم على شبكة الإنترنت من قبل اثنين (أو أكثر) مسارات مستقلة، وسوف يتم تعيين اثنين من الكويري سترينق (Query string) المختلفة، في حين أن الكوكيز المخزنة هي نفسها.

 المرونة مقابل الأمن 
سلسلة الاستعلام العنوان يسمح بالمرونة في استرجاع البيانات من الشبكة، وربما من قاعدة البيانات المستخدمة لملء صفحات من أجل أن خادم الويب. للقراءة فقط وتخزين البيانات، مثل خدمة الخرائط الجوية، هو أحد الأمثلة التي تبين أن الكويري سترينق (Query string) للعناوين يمكن استخدامها مع مرونة كبيرة.

في بعض الأحيان، قد يكون الكويري سترينق (Query string) للعنوان فضح القضايا الأمنية لأنه لا يمكن تحريره من قبل مستخدم لاسترداد البيانات أنهم لا يستطيعون الوصول إليها. على وجه الخصوص، يمكن أن تستخدم الكويري سترينق (Query string)عنوان يحتوي على اسم المستخدم وكلمة السر تكون مع القاموس الهجوم *لتخمين في صالح اعتماد تسجيل الدخول إلى موقع محدد على شبكة الإنترنت. معظم خوادم الويب تستخدم على الأقل فحص ال إم دي5، أو أكثر من أساليب الترميز القوية للتحقق من صحة جميع السترينق المعطاة.

 قضايا التوافق 
وفقا لمواصفات ال HTTP:
*خوادم ينبغي أن يكون حذرا حول اعتمادا على العنوان (والذي يتضمن عناوين المواقع) أعلاه أطوال 255 بايت، وذلك لأن بعض كبار السن أو وكيل العميل التنفيذ قد لا بشكل صحيح دعم هذه الأطوال.HTTP/1.1: Protocol Parameters 

من مواصفات ال أتش تي أم أل 3 أن قيمة أي متغير (مثلا، رابط في <a href=" url "> لا يمكن أن تكون أكثر من 1024 حرفاUnderstanding HTML and SGML  ومع ذلك، فإن مواصفات أتش تي أم أل 4 تغفل هذا التقييد.# http://www.w3.org/TR/html4/intro/sgmltut.html ح - 3.2.2 

مواصفات لا تملي طول معين كحد أدنى أو أقصى للرابط، ولكن التنفيذ يختلف على حسب المتصفح والإصدار. على سبيل المثال، إنترنت إكسبلورر لا يدعم عناوين المواقع التي لها أكثر من 2083 حرفا.http://blogs.msdn.com/ie/archive/2008/03/11/address-bar-improvements-in-internet-explorer-8-beta-1.aspx # 8161782  لا يوجد حد لعدد المتغيرات في العنوان؛ فقط طول الحرف على الرابط هو المهم. ملقمات ويب يمكن أيضا أن تفرض حدودا على طول سلسلة الاستعلام، اعتمادا على الكيفية التي يتم بها تخزين رابط الكويري سترينق (Query string).

الأسباب لهذه المشاكل التي تحدث بكثرة استخدام ميثود POST، بدلا من الميثود GET وتخزينها في محتوى الطلب. حدود الطول على محتوى الطلب عادة ما تكون أعلى بكثير من تلك التي على طول الرابط. على سبيل المثال، الحد على حجم POST، افتراضيا، هو 2 ميغابايت في معهد الدراسات الإسماعيلية 4.0 و128 كيلو بايت في معهد الدراسات الإسماعيلية 5.0.aspfaq.com 

 انظر أيضا 
 بروتوكول نقل النص الفائق
 واجهة المعابر العامة
 سجل المتصفح

 مراجع 

تصنيف:محدد موقع الموارد الموحد
تصنيف:ويب
تصنيف:يو آر إل