tidhttp الحصول على الإجراء لا يعمل على بعض عناوين URL

StackOverflow https://stackoverflow.com/questions/2429958

  •  19-09-2019
  •  | 
  •  

سؤال

واجهت مشكلة في مكون Delphi Tidhttp حيث لا يمكن إجراء عملية الحصول على عنوان URL محدد ولكن على عناوين URL الأخرى يعمل. مثال: إرجاع هذا الرمز استجابة فارغة.Datastring. Response.DataString فارغة فقط مع هذه errorl_url ولكن مع عناوين URL الأخرى، فإن الاستجابة له قيمة. أحتاج إلى جلب محتوى هذا error_url لإصلاح هذه المشكلة.

procedure TForm1.Button1Click(Sender: TObject);
var
  Response : TStringStream;
  error_url: string;
begin
  error_url := 'http://www.chefscatalog.com/international/home.aspx'; //error url
  Response := TStringStream.Create;
  try
    IdHTTP1.Get(error_url, Response);
    Memo1.Text := Response.DataString;
  finally
    FreeAndNil(Response);
  end;
end;

بالمناسبة IDHTTP1 تم إعادة توجيه إعادة توجيه خاصية هنا إلى True Retirection ليست هي المشكلة.

هذا هو الاستثناء الذي واجهته: 1. تم العثور على HTTP / 1.1 302 2. EdeCoRpressionError مع رسالة "خطأ ZLIB (-3)"

يمكنك تنزيل التعليمات البرمجية المصدر (وهو Indytest.zip) لهذا المشروع في هذا الرابط http://www.yourfilelink.com/get.php؟fid=534933.

الرجاء مساعدتي يا شباب. شكرا مقدما :)

هل كانت مفيدة؟

المحلول

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

نظرا لأنك لم تقم بإلغاء ربط مدير ملفات تعريف الارتباط، فأنت تنتهي في حلقة إعادة التوجيه 302 حيث يحتفظ الموقع بالتحقق من ملف تعريف الارتباط، وإعداد ثم إعادة توجيه.

التعامل مع ملفات تعريف الارتباط وسيعمل على ما يرام مع 302 واحد فقط.


ومع ذلك، يبدو أنه لسبب ما إندويا يتجاهل ملفات تعريف الارتباط التي يتم إرسالها بواسطة هذا الموقع. أرغم بعض رمز الاختبار إذا ضربت http://www.google.com. انا حصلت

New cookie: PREF
New cookie: NID
Redirecting (1) to: http://www.google.co.nz/
New cookie: PREF
New cookie: NID

هذا هو رؤوس جوجل ترسل

Set-Cookie: PREF=ID=3c7e441914b902ae:TM=1268686477:LM=1268686477:S=Z-Gwqx52jK0V1rYR; expires=Wed, 14-Mar-2012 20:54:37 GMT; path=/; domain=.google.com
Set-Cookie: NID=32=vsOZvkr4AOZ7320d_OBPf2zR2jau4E6pupbOe_ZaaX4DNjahTzSV-mSA55naTk-5cXQcn7SNEp7uSxbE_cFrL9ZftGApTGZMPGKzcz3_NZE_2MYpWG5PGbwWFw9t2d_R; expires=Tue, 14-Sep-2010 20:54:37 GMT; path=/; domain=.google.com; HttpOnly

ولكن لهذا الموقع الآخر، أحصل على هذا في إخراج التصحيح الخاص بي

Redirecting (1) to: http://www.chefscatalog.com/error.aspx?impsid=0
Redirecting (2) to: http://www.chefscatalog.com/error.aspx?impsid=0

على طول الطريق حتى 15 محاولة .. إذا نظرنا إلى ما يرسله المواقع

Set-Cookie: ASP.NET_SessionId=4o0bpi45evee0d45qos1uy55; path=/; HttpOnly
Set-Cookie: ChefsSite=CartID=00000000-0000-0000-0000-000000000000&cst=f4t8YpBpAAkNiRUd9BEf2luKAA%3d%3d&act=c0f2VBCSbv30F4kasnvWS5OfJQ%3d%3d&CookiesEnabled=False; expires=Wed, 14-Apr-2010 20:54:22 GMT; path=/

أشير إلى أن الموقع يفتقد المجال خارج نهاية ملف تعريف الارتباط، وهو غريب، لكنني لا أعتقد أنه أمر ضروري من RFC. إذا نظرنا إلى طرق AddCookie / 2 من IDCOOKIEMIEMEANAGER الرغبة في ذلك بمثابة Param لذلك ربما لن تعمل على أي ملفات تعريف الارتباط التي لا تعطي المجال.

لقد اختبرت هذا على بضع مواقع وكل شيء على ما يرام إذا كان ملف تعريف الارتباط يتضمن المجال = .google.com؛

من المثير للاهتمام أيضا ملاحظة أنه على IDHTTP.Onredirect إذا نظرتم

IDHTTP.RESPONSE.RAWHEDERS.Text.

بالنسبة للموقع الذي لا يعمل، لا ترى ملفات تعريف الارتباط المحددة ولكن على المواقع التي تعمل على رؤية ملفات تعريف الارتباط ...

ومع ذلك، إذا قمت بتعيين IDHTTP UserAgent ل

    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1

(من إجابة أخرى)

ثم يبدو أن التقاط ملفات تعريف الارتباط بخير

    New cookie: ASP.NET_SessionId
    New cookie: ChefsSite
    Redirecting (1) to: http://www.chefscatalog.com/international/home.aspx
    New cookie: ChefsSite

غريب.

نصائح أخرى

تحقق من الحدث On Redirect. لسبب ما، يتم إعادة توجيهك إلى صفحة خطأ.

http://www.chefscatalog.com/error.aspx؟impsid=0.

التي، بدورها، تعيد توجيهك مرة أخرى إلى صفحة الخطأ هذه حتى تستنفد Redirectmaximum (15).

تحديث:

بمجرد إعادة توجيهك إلى صفحة الخطأ، يوضح Wizzard أدناه سبب إعادة توجيهها باستمرار إلى نفس صفحة الخطأ مرارا وتكرارا. بسكويت.

السبب في إعادة توجيهك في المقام الأول ربما لا يتعرف الموقع على (أو مثل) سلسلة وكيل المستخدم (في طلب العقار). افتراضيا، إنها "Mozilla / 3.0 (متوافقة؛ مكتبة Indy)". تغييره إلى السلسلة الحالية المستخدمة من قبل ثعلب النار, بمعنى آخر أو غيرها من المتصفح المعترف بها.

جربته مع "Mozilla / 5.0 (X11؛ U؛ Linux I686؛ en-US؛ RV: 1.9.2.1) Gecko / 20100122 Firefox / 3.6.1"، ويبدو أن العمل على ما يرام.

يمكنك العثور على مزيد من التفاصيل في إندي KB PDF..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top