2012-07-06 72 views
0

場景:我有一個網頁,需要從Javascript進行XMLRPC調用,並使用mimic.js來做到這一點。 XMLRPC服務器是使用基於SimpleXMLRPCServer的python編寫的。CORS XMLRPC通過mimic.js

當網頁和服務器在同一臺機器上時,一切正常。如果頁面來自不同的機器,我遇到了CORS問題。我設法去的地步,我知道XMLRPC調用打通到服務器的點,但該頁面還在抱怨:

XMLHttpRequest cannot load http://server.machine.com:8888/. Origin http://page.machine.com is not allowed by Access-Control-Allow-Origin. 
(mimic.js:8) NETWORK_ERR: XMLHttpRequest Exception 101: A network error occurred in synchronous requests. 

這是我不得不添加到我的SimpleXMLRPCRequestHandler的子類我的服務器:

 def do_OPTIONS(myself): 
      myself.send_response(200) 
      myself.send_header("Access-Control-Allow-Origin", "*") 
      myself.send_header("Access-Control-Allow-Headers","Content-Type") 
      myself.end_headers() 
      myself.wfile.write("OK") 

我的理解是,我不應該需要改變有關發出呼叫XMLRPC什麼當服務器在不同的機器上(除指定新的地址)。所以(終於!)這個問題:我錯過了什麼?如果答案和「你需要一個不同的XMLRPC客戶端庫」一樣簡單,那麼對於替換的建議就會受到歡迎。

回答

1

似乎ACA-Origin & ACA頭標頭也需要添加到來自POST請求(實際的XMLRPC方法調用)的響應中。