Как подключить SproutCore к CouchDB в Mac OSX - PullRequest
2 голосов
/ 04 июня 2011

Я использую SproutCore для запроса базы данных CouchDB в Mac OSX (10.6.7) из учебника по NetTuts + premium. Имя базы данных - микроблог. Разрешение запроса к этой строке:

"http://localhost:5984/microblog/_design/posts/_view/posts?descending=true"

Если я наберу этот запрос прямо в адресной строке браузера, я получу хороший ответ json. Но через приложение SproutCore я получаю сообщение об ошибке:

405 Method Not Allowed

Почему это? будет ли это потому, что SC заканчивается: 4020 и CouchDB из: 5984? Есть идеи?

1 Ответ

4 голосов
/ 05 июня 2011

Из-за междоменных правил Javascript вам не разрешается запрашивать произвольный URL из вашего браузера.Если вы загрузили свою страницу sproutcore с локального хоста: 4020, запрещается связываться с любым другим хостом или портом на том же хосте.

Чтобы решить эту проблему, вы обычно делаете свой прокси хоста sproutcore на сервере.Вы можете сделать это, включив прокси-оператор, подобный следующему, в свой сборочный файл sproutcore

proxy "/microblog", :to => "localhost:5984"

, который перенаправит весь запрос, идущий на localhost: 4020 / microblog, на ваш внутренний localhost: 5984 / microblog.Как вы можете себе представить, это может привести к проблемам, когда вы не можете установить url в вашем sc-приложении на желаемое значение, общий случай может состоять в том, что ваше sc-приложение также называется «microblog», и указанная выше директива прокси-сервера будет вызывать ваш sc.URL-адрес приложения переопределяется.

Чтобы устранить эту проблему, вы можете использовать другой URL-адрес в приложении sc для связи с бэкендом, например / db, а затем использовать параметр url в директиве proxy для перезаписи целевого URL-адреса:

proxy "/db", :to => "localhost:5984", :url => "microblog"

Все запросы к localhost: 4020 / db будут затем перенаправляться на localhost: 5984 / microblog и больше не будут мешать вашему приложению sc на localhost: 4020 / microblog.

...