2017-01-09 19 views
0

Я пытаюсь отправить запрос POST с встроенного устройства на свой веб-сервер, но веб-сервер возвращает мне ошибку 400.Запрос HTTP POST возвращает 400, SERVER_PORT_SECURE не используется

Это запрос я посылаю к порту 80 моего сервера:

POST /api_back.php HTTP/1.1 
Host: mysubdomain.mydomain.com 
User-Agent: AppleWebKit/531.21.10 
Accept: */* 
Content-Type: application/x-www-form-urlencoded 
Cache-Control: no-cache 
Accept-Charset: utf-8, us-ascii 
Pragma: no-cache 

data=10,1,1,1,1,-48%0D%0A10,1,1,1,1,-48%0D%0A10,1,1,1,1,-47%0D%0A10,1,1,1,1,-48%0D%0A10,1,1,1,1,-48%0D%0A10,1,1,1,1,-47%0D%0A10,1,1,1,1,-47%0D%0A 

Тогда я получаю следующий ответ:

http/1.1 400 bad request 
 
date: sun, 08 jan 2017 16:59:54 gmt 
 
server: apache/2.4.23 (unix) openssl/1.0.1e-fips mod_bwlimited/1.4 
 
accept-ranges: bytes 
 
connection: close 
 
content-type: text/html 
 

 

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html> 
 
    <head> 
 
    <title>400 Bad Request</title> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
    <style type="text/css"> 
 
     body { 
 
     \t font-family: Verdana, Arial, Helvetica, sans-serif; 
 
     \t font-size: 12px; 
 
     \t background-color:#367E8E; 
 
     \t scrollbar-base-color: #005B70; 
 
     \t scrollbar-arrow-color: #F3960B; 
 
     \t scrollbar-DarkShadow-Color: #000000; 
 
     \t color: #FFFFFF; 
 
\t \t \t margin:0; 
 
     } 
 
     a { color:#021f25; text-decoration:none} 
 
     h1 { 
 
     \t font-size: 18px; 
 
     \t color: #FB9802; 
 
     \t padding-bottom: 10px; 
 
     \t background-image: url(sys_cpanel/images/bottombody.jpg); 
 
     \t background-repeat: repeat-x; 
 
     \t padding:5px 0 10px 15px; 
 
\t \t \t margin:0; 
 
     } 
 
     #body-content p { 
 
     \t padding-left: 25px; 
 
     \t padding-right: 25px; 
 
     \t line-height: 18px; 
 
     \t padding-top: 5px; 
 
     \t padding-bottom: 5px; 
 
     } 
 
     h2 { 
 
     \t font-size: 14px; 
 
     \t font-weight: bold; 
 
     \t color: #FF9900; 
 
     \t padding-left: 15px; 
 
     } 
 
    </style> 
 
    </head> 
 
    <body> 
 
    <div id="body-content"> 
 
<!-- start content--> 
 

 
<!-- 
 
instead of REQUEST_URI, we could show absolute URL via: 
 
http://HTTP_HOST/REQUEST_URI 
 
    but what if its https:// or other protocol? 
 
    
 
    SERVER_PORT_SECURE doesn't seem to be used 
 
    SERVER_PORT logic would break if they use alternate ports 
 
--> 
 

 
<h1>400 Bad Request</h1> 
 
<p>Your browser sent a request that this server could not understand:</p> 
 
    <blockquote> 
 
    (none) (port 80) 
 
    </blockquote> 
 
<p> 
 
    Please forward this error screen to 31.186.174.155's 
 
    <a href="mailto:[email protected]?subject=Error message [400] 400 Bad Request for (none) port 80 on Sunday, 08-Jan-2017 17:59:54 CET"> 
 
    WebMaster</a>. 
 
</p> 
 
<hr /> 
 

 

 
<!-- end content --> 
 
    </div> 
 
    </body> 
 
</html>

ошибка, кажется, указывают на имя хоста или запросить uri неправильно, поэтому я также попробовал весь URL-адрес в POST-ссылке:

POST http://mysubdomain.mydomain.com/api_back.php HTTP/1.1 
Host: mysubdomain.mydomain.com 
... 

Не повезло и с этим. Другие вещи, которые я пытался

  • Различные агенты пользователя
  • HTTP/1.0
  • Нет субдомен в заголовке хоста

Все они, кажется, приводят к одной и той же ошибки.

Любое предложение? Мне не хватает заголовка? Есть ли ошибка в заголовках?

Любая помощь или предложения очень ценятся!

С уважением, Роберт

+0

Я вижу, что запрос не имеет заголовка 'Content-Length'. После некоторого тестирования кажется, что Apache не требует этого, но попробуйте добавить его. – Rei

ответ

0

Для тех, кто ищет аналогичный вопрос; проблема заключалась в том, что запятая, видимо, не является допустимым персонажем в запросе на отправку, urlencode запятая и жизнь все хороши снова :)