Прокси-запрос ajax не выполняется с кодом состояния 200 - PullRequest
2 голосов
/ 15 июня 2011

Я создаю веб-приложение только для js, использующее внешний API через обратный прокси.

Для этого я настроил свой Apache, добавив следующие правила:

ProxyRequests off
ProxyPassReverseCookiePath /starmobile /
<Location /api/>
    ProxyPass http://209.90.224.106:7500/starmobile/
    ProxyPassReverse http://209.90.224.106:7500/starmobile/
</Location>

<Proxy *>
    Order deny,allow
    Allow from all
    Satisfy all
</Proxy>

ЭтоКстати, все запросы к / api / передаются на сервер api, а все остальные запросы обрабатываются локально (что позволяет загружать статические ресурсы и js).

При выполнении запроса через прокси с помощью curlвсе работает просто отлично:

curl -d "{\"method\":\"getAllItemClasses\"}" http://starcom/api/AvailabilityWebMobile/
[{"code":"Default","id":999},{"code":"06KALANCHOE","id":100041},{"code":"06BEGONIA","id":100043},{"code":"06ROSES","id":100045},{"code":"04AFRICANVIOLET","id":100046},{"code":"04CYCLAMEN","id":100047},{"code":"04ROSES","id":100048},{"code":"04ASST","id":100049},{"code":"04BEGONIA","id":100050},{"code":"04MUM","id":100051},{"code":"04KALANCHOE","id":100052},{"code":"04GERBERA","id":100053},{"code":"04PRIMROSE","id":100054},{"code":"06AZALEA","id":100055},{"code":"06CYCLAMEN","id":100056},{"code":"06MUM","id":100057},{"code":"06GERBERA","id":100058},{"code":"06HYDRANGEA","id":100059},{"code":"06ASST","id":100060},{"code":"06TULIP","id":100063},{"code":"06HYACINTH","id":100064},{"code":"06EASTERLILY","id":100065},{"code":"06SHAMROCK","id":100070},{"code":"045SHAMROCK","id":100071},{"code":"05DAHLIA","id":100194},{"code":"05OSTEO","id":100195},{"code":"06DUTCH BULBS","id":100263},{"code":"06WAVE","id":100304},{"code":"18PKWAVE","id":100305},{"code":"PTWAVE","id":100306},{"code":"2.6QTWAVE","id":100307},{"code":"16.5CLASSICA","id":100308},{"code":"10SQTBISCOTTO","id":100309},{"code":"10TALLBISCOTTO","id":100310},{"code":"13VALLEY","id":100311},{"code":"14COCOHB","id":100312},{"code":"14.5CONTESSA","id":100313},{"code":"PGR","id":100398},{"code":"FERTILIZER","id":100399},{"code":"POTS","id":100409},{"code":"SHUTTLE","id":100410},{"code":"TRAY","id":100411},{"code":"INSERT","id":100412},{"code":"FLAT","id":100413}]

Однако при выполнении того же запроса через ajax я получаю код состояния 200 ОК, но пустое тело.Firebug отображает сообщение «200 OK» красным цветом как ошибку, но больше ничего не говорит, а Chrome просто отображает «(отменено)» сообщение о статусе (хотя деталь распознает заголовок ответа, равный 200).

Я совершенно не понимаю, почему мне не дано тело, поскольку прокси должен предотвращать проблемы, например, с той же политикой домена ....

Я прикрепляю заголовки ответа, как показано в Chrome:

Connection:Keep-Alive
Content-Encoding:gzip
Content-Type:application/json;charset=UTF-8
Date:Wed, 15 Jun 2011 13:03:46 GMT
Keep-Alive:timeout=15, max=100
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Via:1.1 starcom

Заранее спасибо

...