2

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"}
' 
4

1 に答える 1