[英]How to permit access to a different port?
Amber Smalltalk IDE可与用nodejs编写的服务器一起使用。 如何配置允许XMLHttpRequests进入同一域的不同端口的服务器?
琥珀色的默认访问权限是
http://127.0.0.1:4000/
并要检索和存储JSON数据,我想使用ouchDB实例(默认端口为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
在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服务之后,以下代码段在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"}
'
如果我正确理解了您的问题,则尝试从Amber程序中访问127.0.0.1:5984
上的资源。
由于问题中未提及,因此该问题有两种可能的情况:
非琥珀色服务器正在端口5984
上运行。
在这种情况下,端口5984
上运行的特定服务器有责任提供Access-Control-Allow-Origin: *
标头,而Amber服务器则不成问题。
另一台Amber服务器正在端口5984
上运行。
在这种情况下,我们当前不实现发送Access-Control-Allow-Origin: *
标头。 Amber服务器是作为简单的开发服务器,不应用于部署。
但是,如果有特定的用例需要发送此标头,我们可以在Amber邮件列表上进行讨论,或在GitHub跟踪器上创建问题,并将其标记为功能请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.