如何允许访问不同的端口?

Amber Smalltalk IDE与一个用nodejs编写的服务器一起工作。 如何configurationXMLHttpRequests到同一个域的不同端口的服务器?

琥珀色的默认访问权限是

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从XMLHttpRequest跨域访问?

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 

一个'打印'给回

 '{"ok":true,"id":"test2","rev":"1-8d2356ebdbabdd87a35e0ae3b137bdb5"} ' 

如果我正确理解您的问题,请尝试从Amber程序中访问127.0.0.1:5984上的资源。

既然问题中没有提到这个问题有两种可能的情况:

  1. 非琥珀色服务器正在端口5984上运行。

    在这种情况下,运行在端口5984上的特定服务器负责提供Access-Control-Allow-Origin: *标头,而不是琥珀色服务器的问题。

  2. 另一个琥珀色服务器正在端口5984上运行。

    在这种情况下,我们目前不实现发送Access-Control-Allow-Origin: *头。 琥珀色的服务器是一个简单的开发服务器,不应该用于部署。

但是,如果需要发送此头的特定用例,我们可以在Amber邮件列表上讨论,或者在GitHub跟踪器上创build问题,并将其标记为function请求。

Interesting Posts