Amber Smalltalk IDE は、nodejs で記述されたサーバーで動作します。同じドメインの別のポートに送信される XMLHttpRequest を許可するようにサーバーを構成するにはどうすればよいですか?
Amber へのデフォルトのアクセスは
http://127.0.0.1:4000/
JSON データを取得して保存するには、couchDB インスタンスを使用します (デフォルトのポートは 5984 です)。
| req |
req := XMLHttpRequest new.
req open: 'GET' url: 'http://127.0.0.1:5984/' asynchronous: false.
req send: ''.
問題
クロスドメイン アクセス ポリシーのため、アクセスできません。
ノート
サーバーはから呼び出されます
amber-master\bin\server.bat
サーバーは
amber-master\cli\js\amber-cli.js
クライアントは Firefox であり、サーバーが「Access-Control-Allow-Origin ヘッダー」でこれを示す場合、XMLHttpRequest オブジェクトが別のポートにアクセスできるようにする必要があります。
参考文献
http://www.w3.org/TR/cors/#access-control-allow-origin-response-header
XMLHttpRequestからのCouchDBクロスドメインアクセス?
MKroenertによる回答後
CouchDB のバージョン 1.4.0 にアップグレードし、CORS を許可するように local.ini ファイルを調整しました (C:\Program Files\Apache Software Foundation\CouchDB\etc\couchdb\local.ini)。
[httpd]
enable_cors = true
[cors]
origins = *
http://wiki.apache.org/couchdb/CORSの詳細、 特にアクセスを制限する方法。
3.12.1. CORS の有効化 http://docs.couchdb.org/en/latest/configuring.html
次に、couchDB サービスを再起動した後、次のコード スニペットは Amber Smalltalk ワークスペースで正常に動作します。
| req colordict mimeType |
colordict := HashedCollection new.
colordict at: 'red' put: 'rot'.
colordict at: 'blue' put: 'blau'.
colordict at: 'yellow' put: 'gelb'.
req := XMLHttpRequest new.
req open: 'PUT'
url: 'http://localhost:5984/components/test2' asynchronous: false.
mimeType :='application/json'.
req setRequestHeader: 'Content-Type' mimeType: mimeType.
req send: (JSON stringify: colordict).
req responseText
「printit」が返す
'{"ok":true,"id":"test2","rev":"1-8d2356ebdbabdd87a35e0ae3b137bdb5"}
'