الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أجاكس: ماهي ال Content-type لو المراد فقط ارسال Post عادي

مغلق
بدأه Xacker في 28 سبتمبر 2007 · 19 رد · 3,362 مشاهدة · في قسم البرمجة بــ Javascript
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ماذا يجب ان تكون الـ Content-Type لو اردت ارسال فقط بارامترات عادية في الـ POST request مثل:

"foo=this_is_foo&bar=this_is_bar"

في XML HTTP ؟

السلام عليكم ورحمة الله

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#2

أعتقد أن text/html يكفي

أو text/plain;charset=UTF-8

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

جربت الاثنين يا باشمهندس سلفاً قبل طرح السؤال دون فائدة.

لم اعد اعلم هل الكود الذي كتبته فيه غلط ام ماذا..

<script>
// stuff here works fine
function xmlhttp() {var obj;var xml = new Array();xml[0] = "MSXML2.XMLHTTP.5.0";xml[1] = "MSXML2.XMLHTTP.4.0";xml[2] = "MSXML2.XMLHTTP.3.0";xml[3] = "MSXML2.XMLHTTP";xml[4] = "Microsoft.XMLHTTP";xml[5] = "WinHttp.WinHttpRequest.5";xml[6] = "WinHttp.WinHttpRequest.5.1";if (window.ActiveXObject) {for (var i=0; i<xml.length; i++){try {obj = new ActiveXObject(xml);break;} catch(e) {obj = null;}}} else if (window.XMLHttpRequest) {try {obj = new XMLHttpRequest();} catch(e) {obj = null;}}return obj;}

// GET request works fine
var req = xmlhttp();
req.open("GET", "http://www.site.com/?do=GiveID",true);
req.onreadystatechange = function()
{
if (req.readyState==4)
  {
// ID is returned correctly
	var id = req.responseText;
// problem with the POST
	req.open("POST","http://www.site.com/",true);
	req.onreadystatechange = function()
	{
	 if (req.readyState==4)
			 {
		   // not executed
				  alert("done");
			  }
	 req.setRequestParams("Content-Type","text/html");
	 req.send("do=GiveInfo&id="+id);
	 }
   }
}
req.send(null);
</script>

فما رأيك به :(

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

لو عايز تعمل POST بالAjax فالعملية بسيطة انظر الكود التالى ( :P ومتقوليش عدلة عشان يمشى مع IE باشا ) :-

request = new XMLHttpRequest();
request.open("POST", url, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", parameters.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange=ChangeBag;
request.send(this.params);

بس سينجح عن تجربة

و شىء أخير موضوع الHttp Headers فى الPHP خلص على اية :unsure:

تم تعديل هذه المشاركة بواسطة ASDen في 29 سبتمبر 2007 في 22:39

#5

السلام عليكم ورحمة الله,

جربت ما ذكرت لكن حصلت على permission denied رغم ان السكربت على نفس الموقع :(

ما السبب لاني قرات عن المشكلة فقط عندما تكون على موقع اخر..

وبالنسبة لموضوع الـ PHP فقد توقفت عنه قليلا ريثما انهي هذا الذي بين يدي فهو المفتاح لبقية العمل :)

شكرا على المساعدة.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

هناك خطأ فى الكود الى أنا كتبتة معرفش هو المشكلة ولا لأ هو شىء بسيط جدا

params بدلا من this.params فى الsend نسيت أصلحة

ولو كنت صلحتها و فهل

طب و على الLocal Host

لو مرديش على الLocal Host يبقى المشكلة فى الPHP ياريت تحطة أما لو اشتغل يبقى نفكر تانى

تم تعديل هذه المشاركة بواسطة ASDen في 1 أكتوبر 2007 في 03:35

#7

نعم قمت بتعديلها وحتى اني اختبرت الحالتين, حتى السطر الخاص بـ

request.setRequestHeader("Content-length", parameters.length);

قمت بتعديل parameters الى params ووضعت متغير باسم param ليضم المراد ارساله

وسطر: onreadystatechange=ChangeBag; لم استخدمه في البداية ثم قلت لعلي مخطئ بشأنه فعدت واستخدمته.

permission denied / :

بالمناسبة, ليس هناك PHP على الاطلاق, هذا XSS اقوم بكتابته فيه AJAX + JS فقط كما ترى :)

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

هل أنت متأكد انك لاتريد الارسال الى Domain غير الذى يحوى الJs

قم بالتأكد و خاصة انت بتقول XSS هل جربت getServerName() فى ال Js على سبيل التأكد

وعلى العموم مشكلة وحدانية المصدر فى الِAjax ممكن الاستدارة حولها انظر هنا

#9

نعم متأكد لاني لا ارسل بيانات الى خارج الموقع وانما اقوم بجعل الزائر يقوم بارسال بياناته الى مجلد خاص بي (لنقل الرسائل الخاصة) على نفس الموقع :)

هذا الموقع الذي تتحدث عنه وقعت عليه اثناء بحثي عن حل لمشكلة كنت واجهتها في سكربت اخر كان يحتاج الى ارسال بيانات الى الخارج, هل هذا هو الحل الوحيد لاني لا ارى "طبعا عن غير تجربة" انه سيعمل على IE ايضا / :

باي حال ساختبره في اقرب فرصة لاني "crash and burn" من التعب

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10

فى هذة الحالة ممكن يكون المجلد مقفول بالhtaccess مثلا أو ممنوع من الدخول بأى طريقة أخرى

#11

يمنع الـ POST الى مكان يستقبل الـ POST بشكل عادي!! كيف؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

وهل هو فعلا بيستقبل POST عادى أعنى جربت Live Http Headers مثلا

أيضا ربما هو بيشوف انت جايلة منين بمعنى هل انت Authorized انك تعمل POST ويرد عليك أم لا

#13

طبعا جربت, والـ ajax session بيحمل الـ authentication لذلك انا افضل استخدامه بدلا من الـ js فقط لانه يكون بامكاني تنفيذ الامر الذي اريد ويظهر للموقع المصاب بانه يأتي من شخص آخر يستعرض تلك الثغرة في متصفحه.

لا زلت اشعر بوجود خطب ما في الأمر لكني لا اعلم ما هو.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14

طب حاجة تانية ماتحط هنا الOutput بتاع الFireBug لما انت بتستخدم الموقع بنفسك ( وأقصد هنا الجزء الذى يتم فية الPOST بالطريقة الصحيحة لا الXSS )

#15

حسنا لكن ساحتاج الى توصيل جهازي لارفع الكود مرة اخرى الى الموقع, سأوافيك لاحقا بما احصل عليه.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#16

ليس هناك اي output خطأ في الـ console على الاطلاق في الصفحة الاصلية.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#17
اقتباس
ليس هناك اي output خطأ في الـ console على الاطلاق في الصفحة الاصلية.

ولماذا تبحث عن الخطا ما قصدتة أنك تريد محاكاة عملية POST , فلابد من معرفة كيف تعمل هى أساسا ومن هنا كانت فكرة FireBug أو الأدق Live Http Headers

فاذا استطعت محاكاة هذة العملية بالCurl مثلا فهى ممكنة والا فان هناك وسائل للتحقق

هناك شىء مفيد على الأقل عدم وجود شىء فى FireBug معناة عدم وجود Ajax فى الأصل

ولذا فارجو أن تحاول محاكاتة بالCurl أو تضعة هنا- وأقصد ال Headers- لأحاول معك

#18

تعقيب: بخصوص مشكلة قراءة البيانات من على domain آخر غير الذي يوجد عليه السكربت الخاص بالـ AJAX فالحل هنا:

http://jeffreysambells.com/posts/2006/03/0..._ajax_services/

يعمل بصورة رائعة ;)

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#19

لدي الآن مشكلة في IE (Class not registered) وتعال يا شاطر اعرف أي class >_<

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#20

جرب هذا اللينك ستجد في الsource code جافا سكريبت function بها ما تريد لكي تغمل post

http://www.codeproject.com/useritems/AjaxArticle1.asp

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…