2012-07-01 64 views
0

我正在嘗試使用Backbone.js模型來訪問Neo4j內容。我不明白爲什麼下面的通信失敗跨域檢查:對Neo4j的Ajax請求失敗CORE

首先OPTIONS請求:

Request URL:http://localhost:7474/db/data/cypher 
Request Method:OPTIONS 
Status Code:204 No Content 
Request Headers 
    Accept:*/* 
    Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
    Accept-Encoding:gzip,deflate,sdch 
    Accept-Language:en-US,en;q=0.8 
    Access-Control-Request-Headers:origin, content-type, accept 
    Access-Control-Request-Method:POST 
    Connection:keep-alive 
    Host:localhost:7474 
    Origin:http://localhost:3000 
    Referer:http://localhost:3000/test/ 
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11 
Response Headers 
    Access-Control-Allow-Headers:origin, content-type, accept 
    Access-Control-Allow-Methods:POST 
    Access-Control-Allow-Origin:* 
    Allow:OPTIONS,POST 
    Server:Jetty(6.1.25) 

然後POST請求:

Request URL:http://localhost:7474/db/data/cypher 
Request Headers 
    Accept:application/json, text/javascript, */*; q=0.01 
    Content-Type:application/json 
    Origin:http://localhost:3000 
    Referer:http://localhost:3000/test/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11 
Request Payload 
    start n=node(0) match n-[:hasClass]->c where c.className=Collection return c 

我也得到控制檯錯誤:

OPTIONS http://localhost:7474/db/data/cypher 204 (No Content) jquery-1.7.2.min.js:4 
XMLHttpRequest cannot load http://localhost:7474/db/data/cypher. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin. 

據我所知,請求應該被允許,因爲預檢請求sai d Access-Control-Allow-Origin:*。有什麼建議麼?有什麼我失蹤? 謝謝!

回答

0

它看起來像你使用Chrome,並且我認爲this bug有親緣關係。

Ticket #67743: Access-Control-Allow-Origin: * doesn't match localhost 
0

自處理交叉源請求已經很長時間了,但它可能會以某種方式丟失頭文件。但不知道。請注意,未能遵守請求是由您的瀏覽器產生的,因此值得檢查一下您的瀏覽器對x-origin的限制。例如,如果您使用file:// url,許多瀏覽器都不允許。

支持跨源請求不是Neo4j服務器的文檔化功能,它出於傳統原因,並且出於安全原因它很可能會被刪除(因爲沒有額外的安全層,您的數據庫可能會被劫持攻擊者知道它的URL)。

這可能是值得允許它作爲一個關閉的情況的默認設置,雖然..