PHP: html etiketleri dahil 500 sunucu hatası ASP.NET web sonuçlarına POST Talebi

3 Cevap php

Benim durum: Ben POST kullanarak bir ASP.NET web servisine metin göndermek gerekiyor. Tüm sayfa var bir şeklidir:

<form name="aspnetForm" method="post" action="Discussion.aspx?classroom=lG39il1cotOAGJwiNvmQlIPfwmjikD%2fAHLhjjGInAZQ%3d&amp;Page=Posts&amp;ID=794239&amp;Sort=&amp;SortOrder=" id="aspnetForm">

Ben bu işe doğru giriş ile bu forma için bir POST isteği gönderdi Yani, ben düşündüm. Ve, bir ölçüde, o var. Aşağıdaki gibi formu girişleri şunlardır:

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDw..." />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWYQLrt..." />

Ve diğer girdilerin bir demet. Aşağıdaki gibi ben kullandım kodu:

// grab form info
    $inputs = extract_form_inputs($discussion['body']);
    $inputs['__EVENTTARGET']                    = 'ctl00$cphMain$ctl01$btnSubmit';
    $inputs['ctl00$cphMain$ctl01$tbNickname']   = "Your Instructor";
    $inputs['ctl00$cphMain$ctl01$reMessage']    = $message;

    // submit form
    $r = request_send($discussion['url'], $inputs);

extract_form_inputs tam olarak bunu yapıyor. $ Tartışma ['body'] sayfasının içeriği. $ Tartışma ['url'] sayfasının URL. ($ url, $ post_array): request_send iki argüman vardır. Bu http_build_query gibi aynı şekilde, dizinin her elemanı üzerinde rawurlencode gerçekleştirir ve keypairs olarak onları katılır.

The request is url encoded properly, sent to the correct page, and works fine until I insert html tags. I have checked - the 'greater than' and 'less than' symbols ('<' and '>') are url-encoded properly. However, the server responds with a 500 error. It accepts any other text.

Başkasının sorun bu tür rastlamak var?

Html yalanladı bir ASP.NET sunucu üzerinde bazı ayar var mı? Ben bu durumda olmak göremiyorum - Ben istekleri yolluyorum web sitesinde bir zengin metin editörü vardır. Bu metin editörü, sadece ben onu uzaktan yapıyorum, ben gibi aynı isteği gerçekleştirir. Zengin metin editörü forma html gönderir - ben kontrol de kullanarak javascript ki.

Not: Ben ASP.NET sunucu değiştirmek için güç yok.

3 Cevap

Belki validateRequest bayrak / nitelik ayarlanır ve dolayısıyla veri zararlı olarak kabul ve ret edilir.

Sen firebug veya fiddler2 tarayıcınızın gönderdiği gerçek istek oturum gibi bir şey kullanmak ve sonra scriptin isteği onu karşılaştırabilirsiniz. Eğer oturum açabilirsiniz all veri request_send() bütün başlıklar dahil, gönderir? request_send() örn, belki daha kolay istekleri karşılaştırmak için yapar da, Fiddler üzerinden rota bu mümkün olabilir nasıl çalıştığını bağlı Ben çalıştırdığınızda

$ctx = stream_context_create(array('http'=>array('proxy'=>'tcp://localhost:8888')));
file_get_contents('http://php.net', 0, $ctx);

istekleri (8888 kemancının varsayılan vekil liman olma) Fiddler kadar gösterir.

edit: sadece bir 500 Internal Server Error almak mı yoksa tepki daha fazla bilgi içeriyor mu? Durumda php almak değil ya da çok, sen fiddler bu kadar bakmak isteyebilirsiniz cevap gövdesini dönmez.

Ben sonuçları karşılaştırıldı ve web sitesi aptalca göndermeden önce iki kere mesajları url kodlar bulduk. Bile tam url-kodlama - bu en istenmeyen karakterleri özlüyor. Göndermeden önce iki kere ben sadece url-kodlamak mesajı ve diğer ucunda para cezası geliyor - Yine, biçimlendirme şimdi çalışıyor.

Yardımın için teşekkürler!