2012-07-05 121 views
1

我面臨着一個常見的問題與原型Ajax請求的CORS。我搜索了大約2個小時,但仍無法解決問題。我嘗試了不同的方法。沒有什麼幫助我。我需要在我的代碼中設置orgin,Access-Control-Allow-Origin等。我提到以下網站,但他們沒有幫助。跨原點資源共享原型JSON

http://kourge.net/node/131

Cross Origin Resource Sharing with PrototypeJS

new Ajax.Request("http://localhost:4000/somefolder/some.xml", { 
    //new Ajax.Request(source, { 
     asynchronous: false, 
     method: 'get', 
     contentType: 'text/xml', 
     //requestHeaders: ('Access-Control-Allow-Origin', '*','Access-Control-Allow-Methods','GET','Access-Control-Max-Age','1000','Access-Control-Allow-Headers','*'), 
     //requestHeaders: (Access-Control-Allow-Origin, *,Access-Control-Allow-Methods,GET,Access-Control-Max-Age,1000,Access-Control-Allow-Headers,*), 
     //onCreate: function(request) { 
     // request.transport.setRequestHeader = Prototype.emptyFunction; 
    // }, 
    requestHeaders: {Access: '*/*'}, 
    onSuccess: function(result) { 
     alert(result.responseXML); 
    } 
}); 

而且我得到如下回應:

Response Headersview source 
Connection keep-alive 
Content-Length 0 
Content-Type text/html; charset=utf-8 
Date Thu, 05 Jul 2012 08:58:08 GMT 
X-Powered-By Express 
Request Headersview source 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Access-Control-Request-He... x-prototype-version,x-requested-with 
Access-Control-Request-Me... GET 
Connection keep-alive 
Host localhost:4000 
Origin http://localhost:8080 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0 

我送它作爲一個GET請求,但它會作爲一個OPTIONS請求。


我在響應中也添加了標題。仍然沒有幫助。

app.configure('development', function() { 
    app.use(express.errorHandler({ 
     dumpExceptions :true, 
     showStack :true 
    })); 
    app.all('*', function(req, res, next) { 
     res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4000, http://localhost:8000'); 
     res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE'); 
     res.setHeader('Access-Control-Allow-Headers', 'x-prototype-version,x-requested-with'); 
     res.setHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'); 
     res.setHeader('Accept-Encoding', 'gzip, deflate'); 
     res.setHeader('Accept-Language', 'en-us,en;q=0.5'); 
     res.setHeader("X-Requested-With", "XMLHttpRequest"); 
     res.setHeader("Orgin", 'http://localhost:4000'); 
     next() 
    }); 
}); 

的加入/體現響應:

Response Headersview source 

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Access-Control-Allow-Head... x-prototype-version,x-requested-with 
Access-Control-Allow-Meth... GET,POST,PUT,DELETE 
Access-Control-Allow-Orig... http://localhost:4000, http://localhost:8000 
Allow GET,POST,PUT,DELETE,TRACE,CONNECT,PROPFIND,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK,VERSION-CONTROL,REPORT,CHECKOUT,CHECKIN,UNCHECKOUT,MKWORKSPACE,UPDATE,LABEL,MERGE,BASELINE-CONTROL,MKACTIVITY,ORDERPATCH,ACL,SEARCH,PATCH,PURGE 
Connection keep-alive 
Content-Length 224 
Content-Type text/html; charset=utf-8 
Date Fri, 06 Jul 2012 06:20:51 GMT 
Orgin http://localhost:4000 
X-Powered-By Express 
X-Requested-With XMLHttpRequest 

Request Headersview source 

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Access-Control-Request-He... x-prototype-version,x-requested-with 
Access-Control-Request-Me... GET 
Connection keep-alive 
Host localhost:4000 
Origin http://localhost:8080 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0 

我還能做些什麼來解決這個問題?

回答

1

Access-Control-Allow-Origin: *需要成爲響應響應的一部分,而不是請求頭(您的Ajax請求)。

您請求數據的服務器是授予/拒絕來自跨域腳本的權限。

我會研究如何爲您使用的任何服務器環境設置Access-Control-Allow-Origin

+0

我的應用程序(請求/ orgin服務器)在8000端口的Tomcat中運行。上述xml是一個靜態文件,由3000端口中的node + express(respondin server/host)提供。它只是從靜態路徑,即從快速文件夾結構的公用文件夾來的。 – Jak 2012-07-06 04:38:11

+0

Tomcat服務器端口是8080 – Jak 2012-07-06 06:28:57

+0

我找到了解決方案。簡單地將Prototype Ajax調用更改爲jQuery Ajax調用。並添加了「crossDomain:true」, – Jak 2012-08-14 05:58:27