【发布时间】:2013-09-03 22:59:00
【问题描述】:
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
CouchDB cross-domain access from XMLHttpRequest?
MKroenert 回答后
我升级到 1.4.0 版的 CouchDB 并调整了 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 服务后,以下代码 sn-p 在 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"}
'
【问题讨论】:
标签: node.js couchdb cors amber-smalltalk