ইন্টারনেট এক্সপ্লোরার কেন ব্যর্থতার পরে আজাক্স কলে HTTP পোস্ট বডি পাঠায় না?


114

আমরা নিম্নলিখিত দৃশ্যের নির্ভরযোগ্যভাবে পুনরায় তৈরি করতে সক্ষম:

  1. একটি ছোট এইচটিএমএল পৃষ্ঠা তৈরি করুন যা সার্ভারের কাছে এজেএক্স অনুরোধ করে (HTTP পোস্ট ব্যবহার করে)
  2. নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করুন এবং পুনরায় সংযোগ করুন
  3. ব্যর্থতার পরে IE যে প্যাকেটগুলি তৈরি করে তা পর্যবেক্ষণ করুন

একটি ব্যর্থ নেটওয়ার্ক সংযোগের পরে, IE পরবর্তী এজেএক্স অনুরোধ করে তবে HTTP পোস্ট করার সময় কেবল HTTP শিরোনাম (দেহ নয়) প্রেরণ করে । এটি সার্ভারে সমস্ত ধরণের সমস্যা সৃষ্টি করে কারণ এটি কেবল একটি আংশিক অনুরোধ। গুগল এই সমস্যাটি বিংয়ের সাথে নিয়ে আসে এবং আপনি প্রচুর লোককে এজেএক্স বা অব্যক্ত এজেএক্স ব্যর্থতা ব্যবহার করে "র্যান্ডম সার্ভার ত্রুটি" সম্পর্কে অভিযোগ করে দেখতে পাবেন।

আমরা জানি যে আইই (বেশিরভাগ অন্যান্য ব্রাউজারের মত নয়) সর্বদা দুটি ডাব্লু টিসিপি / আইপি প্যাকেট হিসাবে একটি HTTP পোস্ট প্রেরণ করে। শিরোনাম এবং শরীর পৃথকভাবে প্রেরণ করা হয়। ব্যর্থতার পরে সরাসরি ক্ষেত্রে, আইই কেবল শিরোনাম প্রেরণ করে । IE কখনই পে-লোড প্রেরণ করে না এবং সার্ভারটি শেষ পর্যন্ত একটি টাইমআউট দিয়ে সাড়া দেয়।

আমার প্রশ্নটি হল - কেন এটি এভাবে আচরণ করে? এটি HTTP অনুমানের ভিত্তিতে ভুল বলে মনে হয় এবং অন্যান্য ব্রাউজারগুলি এ জাতীয় আচরণ করে না। এটি কি কেবল বাগ? অবশ্যই এটি কোনও গুরুতর আজাক্স ভিত্তিক ওয়েব অ্যাপ্লিকেশনটিতে বিপর্যয় সৃষ্টি করে।

তথ্যসূত্র তথ্য:

এই জাতীয় সমস্যাটি রয়েছে, এইচটিটিপি রাখার জন্য টাইমআউটগুলি চালিত করে যা 1 মিনিটের চেয়ে কম হয় এবং এখানে ডকুমেন্টেড হয়:

http://us.generation-nt.com/xmlhttprequest-post-sometimes-fails-when-server-using-keep-aliv-help-188813541.html

http://support.microsoft.com/default.aspx?kbid=831167


6
এটি একটি দুর্দান্ত, সু-সংজ্ঞায়িত প্রশ্ন যা উত্তরের প্রাপ্য। দুর্ভাগ্যক্রমে, এটি একটি সামান্য বিষয়। আমি নিশ্চিত নই যে এটি ওয়েবমাস্টার্স.স্ট্যাকেক্সচেঞ্জ.কম বা সুপারসুজার.স্ট্যাকেক্সেক্সঞ্জ.কম এ আরও ভাল হবে কিনা ।
স্টিফেন

3
@ গিলি 3, আমি মনে করি আমার সাথে অবশ্যই কিছু ভুল হতে হবে, কারণ আমি এটি পড়েছিলাম এবং কেবল মাথা
ঘোরালাম

1
@ গিলি 3: ডাচ অনুবাদ করলে এটি সঠিক হবে, কারণ 'গুগেলেন' একটি ক্রিয়া (এমনকি ডাচ অভিধানে সংজ্ঞায়িত) যার অর্থ ডাচ ভাষায় 'ওয়েব অনুসন্ধান করা'। হ্যাঁ, এটি 'গুগলেন' বানান এবং 'গুগলন' নয়। অদ্ভুত, আমি জানি। সুতরাং, আপনি কেবল বলতে পারেন: 'গুগল এই সমস্যাটি বিংয়ের সাথে দেখা করেছেন।' এবং এটি সঠিক হবে।

11
@ গিলি 3: বিং কী? আমি এটি গুগল করছি।
রকেট হাজমত

5
"কেন এটি এভাবে আচরণ করে?" - আপনি কি একটি উত্তরের জন্য গ্রহণ করবেন "মাইক্রোসফ্ট লোকেরা যদিও বেশিরভাগ উজ্জ্বল, আমাদের মধ্যে যারা ডিইসি, ইউনিক্স, অ্যাপল, কমোডোর বা অন্যান্য ব্যাকগ্রাউন্ডের মাধ্যমে ডিজিটাল যুগে এসেছিল তাদের থেকে মূলত আলাদা একটি প্রোগ্রামিং সংস্কৃতির অংশ, এবং এমন কিছু করার ঝোঁক রয়েছে যা আমাদের বাকী সবাইকে বিস্মিত করে তোলে, তাদের উজ্জ্বলতায় নয়, বরং তাদের অত্যধিক জটিলতা এবং এমন বিষয়গুলির সামগ্রিক দুর্নীতিতে, যা আমাদের বাকিদের কাছে সহজ এবং সরল?
jcomeau_ictx

উত্তর:


28

এই প্রশ্নের কোনও সুস্পষ্ট উত্তর বলে মনে হচ্ছে না, তাই আমি বিকল্প হিসাবে আমার অভিজ্ঞতামূলক তথ্য সরবরাহ করব এবং এর চারপাশে কাজ করার কিছু উপায় সরবরাহ করব। হয়তো কিছু এমএস অভ্যন্তর একদিন এই বিষয়ে কিছু আলোকপাত করবে ...

  1. যদি এইচটিটিপি কিপ-অ্যালাইভ সার্ভারে অক্ষম থাকে তবে এই সমস্যাটি চলে যায়। অন্য কথায়, আপনার এইচটিটিপি 1.1 সার্ভার প্রতিক্রিয়াটিতে একটি Connection: Closeলাইন সহ প্রতিটি আজাক্স অনুরোধের প্রতিক্রিয়া জানাবে । এটি আইইকে খুশি রাখে তবে প্রতিটি অ্যাজাক্সকে নতুন সংযোগ খোলার অনুরোধ জানায়। এটির একটি উল্লেখযোগ্য পারফরম্যান্স প্রভাব থাকতে পারে, বিশেষত উচ্চ ল্যাটেন্সি নেটওয়ার্কগুলিতে।

  2. যদি এজ্যাক্স অনুরোধগুলি দ্রুত ধারাবাহিকতায় করা হয় তবে বিষয়টি সহজেই ট্রিগার হয়ে যায়। উদাহরণস্বরূপ, আমরা প্রতি 100 মিমি অ্যাজাক্স অনুরোধ করি এবং তারপরে নেটওয়ার্কের স্থিতি পরিবর্তন হয়, ত্রুটিটি পুনরুত্পাদন করা সহজ easy যদিও বেশিরভাগ অ্যাপ্লিকেশন সম্ভবত এই জাতীয় অনুরোধগুলি করে না, আপনার একেবারে ঠিক পরে বেশ কয়েকটি সার্ভার কল ঘটতে পারে যা এই সমস্যার কারণ হতে পারে। কম চ্যাটি IE কে খুশি রাখে।

  3. এটি এনটিএলএম প্রমাণীকরণ ছাড়াও ঘটে।

  4. সার্ভারে আপনার এইচটিটিপি-র লাইভ-টাইমআউটটি ডিফল্টের চেয়ে কম (যা উইন্ডোজে 60০ সেকেন্ডে ডিফল্ট হয়) হয়। প্রশ্নের লিঙ্কে বিশদ সরবরাহ করা হয়েছে।

  5. এটি ক্রোম বা ফায়ারফক্সের সাথে ঘটে না। এফএফ একটি প্যাকেট প্রেরণ করে তাই দেখে মনে হয় এটি পুরোপুরি এড়ানো হবে।

  6. এটি আইই 6, 7, 8 এ ঘটে IE 9 বিটার সাথে পুনরুত্পাদন করা যায়নি।


4
এই সমস্যাটি সমাধানের অন্যান্য উপায় আছে? কোন জাভাস্ক্রিপ্ট ঠিক আছে? আমি বিভিন্ন এক্সএমএলএইচটিটিপি অবজেক্টগুলিকে দেখার চেষ্টা করেছি এবং তারা এখনও সমস্যাটি সমাধান করেনি।
বার্লিন ব্রাউন

11

মাইক্রোসফ্ট কেবি নিবন্ধ শিরোনাম যখন আপনি মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরার বা একটি পুনরায় পোস্ট অপারেশন সঞ্চালনের জন্য অন্য কোনও প্রোগ্রাম ব্যবহার করেন, কেবলমাত্র শিরোনাম ডেটা পোস্ট করা হয় বলে মনে হয় এই সমস্যাটি ঠিক হয়েছে।

নিবন্ধটি একটি হটফিক্স সরবরাহ করে। পরবর্তী আই আই 8 এর মতো ব্রাউজারগুলির জন্য এটি বলে যে হটফিক্স ইতিমধ্যে অন্তর্ভুক্ত রয়েছে তবে ক্লায়েন্ট পিসিতে রেজিস্ট্রি সেটিংসের মাধ্যমে সক্ষম করা প্রয়োজন


1
আইই 10 নিয়ে আমি এই সমস্যাটি অনুভব করছি, যা নিবন্ধটি উল্লেখ করে নি।
ClearCloud8

6
নিবন্ধটি এখন আই 11 পর্যন্ত উল্লেখ করেছে, সুতরাং দেখে মনে হচ্ছে এটি কখনও ঠিক করা হয়নি।
পিটার

আমি বিশ্বাস করি যে আমি একটি প্রোডাকশন সাইটে এই সমস্যাটি अनुभव করছি
মিলহাউস

কেউ কি কোনও কাজের সন্ধান পেয়েছে? বিশেষত আমি একটি 307 এবং এফএফ, ক্রোম, সাফারি প্রেরণ করি নতুন এন্ডপয়েন্টে ডেটা পুনরায় পোস্ট করুন - আইই না। আমি আমার ব্যবহারকারীদের হটফিক্স / রেজিস্ট্রি প্যাচ করতে বলতে পারি না।
ব্র্যাড গন

2

আমার একই ধরণের সমস্যা হয়েছিল যেখানে IE এর কিছু পুরানো সংস্করণ কেবলমাত্র শিরোনাম ফেরত পাঠায় কোনও পোষ্টের মূল অংশ নয়। আমার সমস্যাটি IE এবং NTLM এর সাথে সম্পর্কিত। যেহেতু আপনি এনটিএলএমের কথা উল্লেখ করেননি, সম্ভবত এটি সাহায্য করে না, তবে কেবল ক্ষেত্রে:

http://support.microsoft.com/kb/251404


আপনার লিঙ্কটি আইই ১১ এবং আইআইএস
হরমিন্দার

1

এটি একটি লং শট, তবে আইই (এবং এমনকি ফায়ারফক্স) কখনও কখনও সংযোগটিকে "স্মরণ করে" এটি HTTP অনুরোধের জন্য ব্যবহার করে। নোট / উদাহরণ:

  • ফায়ারফক্সে, আমি যদি প্রক্সি সেটিংস পরিবর্তন করি এবং কোনও পৃষ্ঠায় SHIFT-RELOAD চাপি তবে এটি এখনও পুরানো প্রক্সি ব্যবহার করে। তবে, আমি যদি পুরানো প্রক্সি ("কিলাল স্কুইড") হত্যা করি তবে এটি নতুন প্রক্সি ব্যবহার শুরু করে।

  • আপনি যখন সংযোগ বিচ্ছিন্ন / পুনরায় সংযোগ স্থাপন করেন, আপনি কি নতুন আইপি ঠিকানা বা অনুরূপ কিছু পান? আইই এখন-মৃত ঠিকানায় ডেটা প্রেরণ করছে কিনা তা দেখতে আপনি কোনওভাবে পুরানো আইপি ঠিকানাটি পর্যবেক্ষণ করতে পারেন?

  • আমার ধারণা হ'ল আইই তথ্য পাঠাচ্ছে, ঠিক ভুল পথে। "POST" প্যাকেটের জন্য নেটওয়ার্ক সংযোগ ক্যাচ না করার জন্য এটি যথেষ্ট স্মার্ট হতে পারে তবে পোস্ট পেলোডগুলির জন্য এটি করার মতো যথেষ্ট স্মার্ট নাও হতে পারে।

  • এটি সম্ভবত বেশিরভাগ এজেএক্স অ্যাপ্লিকেশনগুলিকে প্রভাবিত করে না, যেহেতু লোক খুব কমই তাদের নেটওয়ার্কগুলিতে সংযোগ বিচ্ছিন্ন করে এবং পুনরায় সংযোগ করে?


2
আমি মনে করি সমস্যাটি শেষটি। আমি মনে করি মাইক্রোসফ্ট একটি "খুব কমই ঘটে: বাস্তবায়ন করি না" -পলসি ব্যবহার করে। :)

1
উত্স থেকে গন্তব্য পর্যন্ত সমস্ত HTTP ট্র্যাফিক আমি পর্যবেক্ষণ করি। আমি নিশ্চিত করতে পারি যে (ক) আমার আইপি ঠিকানা পরিবর্তন হয়নি এবং (খ) অন্য কিছু প্রেরণের চেষ্টা নেই। আইই একটি নতুন সকেট খোলে এবং একটি আংশিক অনুরোধ প্রেরণ করে। আমি এমএস নিবন্ধটি যেভাবে পড়েছি তা হ'ল তাদের সুরক্ষা আপডেটের একটি broke তারপরে তারা এটিকে ঠিক করার জন্য একটি প্যাচ তৈরি করেছিল। তবে আপনি যদি এটি "পুরানো" ভাঙ্গা "আচরণ করতে চান তবে আপনি এই রেজিস্ট্রি কীটি যুক্ত করতে পারেন। Retry_HeaderOnlyPOST_OnConnectionReset। শুধু উন্মাদনাটি বোঝার চেষ্টা করছি।
ডডজিরাবিট 27'11

আপনার শেষ পয়েন্টে: যদি আপনার কাছে এমন একটি অ্যাজাক্স অ্যাপ থাকে যা পর্যায়ক্রমে 10 টি সেকেন্ডে পোল করে, তবে আমরা দেখতে পেলাম যে কয়েক ঘন্টা খোলা রাখলে এই ত্রুটিটি ঘটবে। সম্ভবত ওয়াইফাই সংযোগ যা ড্রপ করে বা স্কেচি নেটওয়ার্ক - তবে আমাদের অভিজ্ঞতা এই সমস্যাটি খুব আসল।
ডডজিরাবিট

1

আপনি কি এনটিএলএম প্রমাণীকরণ ব্যবহার করছেন?

এনটিএলএম প্রমাণীকরণ ব্যবহার করার সময়, IE পোস্ট ডেটা প্রেরণ করে না। এটি শিরোনামের তথ্য প্রেরণ করে, একটি অননুমোদিত প্রতিক্রিয়া প্রেরণ অনুমোদনের প্রত্যাশা করে এবং 'পুনরায়-প্রমাণীকরণ' পরে পোস্টটি প্রেরণ করে।


আমরা এনটিএলএম প্রমাণীকরণ ব্যবহার করি না। বেনাম অনুরোধের সাথে ঘটে।
ডডজিরাবিট

0

.Jax ব্যবহার করার সময় আমার আজ একইরকম সমস্যা হয়েছিল এবং অ্যাসিঙ্কটি মিথ্যাতে সেট করে এটি ঠিক করতে সক্ষম হয়েছিল able

$.ajax({
  async: false, 
  url: '[post action url]',
  data: $form.serialize(),
  type: 'POST',
  success: successCallback
});

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.