2

NetTuts +プレミアムのチュートリアルから、SproutCoreを使用してMac OSX(10.6.7)上のCouchDBデータベースにクエリを実行しています。データベース名はマイクロブログです。クエリは次の文字列に解決されます。

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

このクエリをブラウザのアドレスバーに直接入力すると、jsonの良い答えが得られます。しかし、SproutCoreアプリを介して、エラーメッセージが表示されます。

405 Method Not Allowed

何故ですか?これは、SCが:4020を使い果たし、CouchDBが:5984を使い果たしているためでしょうか?何か案は?

4

1 に答える 1

4

Javascriptのクロスドメイン規制により、ブラウザから任意のURLを照会することは許可されていません。sproutcoreページをlocalhost:4020からロードした場合、同じホスト上の他のホストまたはポートに接続することは禁止されています。

この問題を克服するには、通常、sproutcoreホストをバックエンドにプロキシします。これを行うには、sproutcoreビルドファイルに次のようなプロキシステートメントを含めます。

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

これにより、localhost:4020 / microblogに送信されるすべてのリクエストがバックエンドlocalhost:5984/microblogに転送されます。これにより、scアプリケーションのURLを目的の値に設定できないという問題が発生する可能性があるため、一般的なケースとして、scアプリケーションの名前も「マイクロブログ」になっている場合があります。上記のプロキシディレクティブによってscが発生します。アプリケーションのURLが上書きされます。

この問題を修正するには、scアプリケーションで別のURLを使用してバックエンドに接続します(例:/ db)。次に、プロキシディレクティブのurlパラメーターを使用してターゲットURLを書き換えます。

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

localhost:4020 / dbへのすべてのリクエストは、localhost:5984 / microblogに転送され、localhost:4020/microblogのscアプリケーションに干渉しなくなります。

于 2011-06-05T10:13:22.317 に答える