【问题标题】:How to permit access to a different port?如何允许访问不同的端口?
【发布时间】: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


    【解决方案1】:

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

    由于问题中没有提到,所以这个问题有两种可能的情况:

    1. 非 Amber 服务器正在端口 5984 上运行。

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

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

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

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

    【讨论】:

    • 谢谢,这是您的情况 1,我已在问题中添加了更多详细信息。在参考资料部分,我链接了另一个问题,该问题与将 Apache 提供的文件链接到 couchDB(所有 localhost)有关。
    • 在设置方面是第一种情况。 couchdb 在端口 5984 上运行,amber 在端口 4000 上运行。我需要告诉 amber 服务的页面以允许 XMLHttpRequest 访问端口 5984。所以在解决方案的情况下,它似乎是你的情况 2;我必须配置 amber-server。
    • @Hannes:然后您必须配置 CouchDB 服务器以按照您链接的问题中的建议提供 Control-Allow-Origin 标头。是 CouchDB 不允许连接,而不是 Amber 服务器,因为网页不在 CouchDB 端口上提供服务。
    • 完成,请参阅问题的补充。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多