如何允许访问其他端口?

时间:2013-08-31 08:11:07

标签: node.js couchdb cors amber-smalltalk

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: ''.

| req | req := XMLHttpRequest new. req open: 'GET' url: 'http://127.0.0.1:5984/' asynchronous: false. req send: ''.

问题

由于跨域访问策略,无法访问。

备注

调用服务器

服务器位于

amber-master\bin\server.bat

客户端是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的回答

我升级到CouchDB版本1.4.0并调整了local.ini文件以允许CORS (C:\ Program Files \ Apache Software Foundation \ CouchDB \ etc \ couchdb \ local.ini)

amber-master\cli\js\amber-cli.js

更多信息 http://wiki.apache.org/couchdb/CORS 特别是如何限制访问。

3.12.1。启用CORS http://docs.couchdb.org/en/latest/configuring.html

然后在重新启动couchDB服务后,以下代码段在Amber Smalltalk工作区中正常工作

[httpd]
enable_cors = true

[cors]
origins = *

'printit'回馈

| 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  

1 个答案:

答案 0 :(得分:3)

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

由于问题中未提及此问题,因此有两种可能的情况:

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

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

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

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

  3. 但是,如果存在需要发送此标头的特定用例,我们可以在Amber mailinglist上讨论此问题,或在GitHub tracker上创建问题并将其标记为功能请求。< / p>