[英]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.