Междоменный запрос на обслуживание с использованием SproutCore - PullRequest
0 голосов
/ 01 декабря 2011

Я пытался решить эту проблему, но безуспешно.

У меня есть веб-приложение на моем домене, скажем www.myDomain.com. Мне нужно позвонить в службу, которая присутствует в другом домене, скажем www.anotherDomain.com/service.do?

Я использую SproutCore SC.Request.getUrl(www.anotherDomain.com/service.do?) для вызова этой службы.

Я получаю сообщение об ошибке, что Origin www.myDomain.com не разрешено access-control-allow-origin.

Когда я был на стадии разработки и использовал sc-server, проблема была решена с помощью прокси. Теперь, когда я развернул приложение на реальном сервере, я заменил все строки, где я настроил прокси, на фактическое имя домена. Я снова начал получать эту ошибку.

Проблема в том, что Я НЕ МОГУ СДЕЛАТЬ ЛЮБЫЕ ИЗМЕНЕНИЯ на сервер в другом домене. Все сообщения, с которыми я сталкивался, утверждают, что другой сервер в другом домене должен предоставлять заголовок access-control-allow-origin и что он должен поддерживать глагол OPTIONS.

У меня вопрос: возможно ли мне подключиться к этой службе, используя метод SC.Request.getUrl() SproutCore?

Кроме того, в других постах, которые я читал, упоминалось, что простой запрос GET не должен быть предварительно выдан. Почему тогда мои запросы отображаются как OPTION вместо GET?

Заранее большое спасибо! : D

1 Ответ

0 голосов
/ 01 декабря 2011

Это не проблема Sproutcore;Это проблема, связанная с политикой одинакового происхождения в javascript.

Если вы не можете изменить производственный сервер, у вас нет другого выбора, кроме как разработать собственный прокси-сервер и заставить ваш прокси работать в реальной службе.

Это эффективно заменяет sc-сервер в вашей производственной среде.

Все, что этот сервер должен сделать, это принять входящий запрос и передать его на номер www.anotherDomain.com/?service.do.

. Вам необходимо убедиться, что вы передали все параметры, файлы cookie, заголовки, глагол http,и т.д ....

Это далеко от идеала, потому что теперь ошибки могут появляться в других местах.Реальный сервис потерпел неудачу?Сбой прокси?и т. д.

Если бы вы могли изменить другой домен, вы могли бы

1) развернуть там свое приложение SC.
2) вставить заголовки CORS, чтобы вы могли делать междоменные запросы

...