Amber Smalltalk IDE 与用 nodejs 编写的服务器一起工作。如何配置允许 XMLHttpRequests 访问同一域的不同端口的服务器?
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,它应该允许 XMLHttpRequest 对象可以访问不同的端口,前提是服务器使用“Access-Control-Allow-Origin 标头”指示这一点。
参考
http://www.w3.org/TR/cors/#access-control-allow-origin-response-header
来自 XMLHttpRequest 的 CouchDB 跨域访问?
MKroenert 回答后
我升级到 CouchDB 1.4.0 版并调整了 local.ini 文件以允许 CORS (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"}
'