2011-12-29 143 views
0

可能重複:
Cross-domain XHR/AJAX : a possible workaround?跨域Web服務調用

我試着做從我的JavaScript內的xmlHttpRequest到這是一個在另一臺服務器上運行的RESTful Web服務。我得到了一個JS錯誤指定

"XMLHttpRequest cannot load 'URL'.Origin 'localhost' is not allowed by Access-Control-Allow-Origin. 

谷歌上搜索我才知道,我不能跨域做出XmlhttpRequest後。

我想知道什麼是從我的Javascript實現跨域Web服務調用的最佳方式。

回答

0

你好我

function CrossDomainAjax(url, data, callback){ 
    $.ajax({ 
    type: "GET", 
    url: url, 
    data: data, 
    contentType: "application/json; charset=utf-8", 
    dataType: "jsonp", 
    jsonpCallback: callback 
    });  
} 

現在用這跟我的應用程序的服務器端功能
它應該返回JSONP還,這樣

callBack({your:json}); 
0

你需要做的服務器更改以允許來自您的本地主機服務器的請求。您更改Apache的httpd的-vhosts.conf文件設置:

<VirtualHost *:80> 
ServerAdmin [email protected] 
DocumentRoot 「C:/apache-tomcat-6.0.29/webapps/myApplication」 
ServerName skill-guru.com 
ErrorLog 「logs/skg1-error.log」 
CustomLog 「logs/skg1-access.log」 common 


Header set Access-Control-Allow-Origin 「*」 

<Directory 「C:/apache-tomcat-6.0.29/webapps/myApplication」> 
Options -Indexes FollowSymLinks 
AllowOverride AuthConfig FileInfo 
Order allow,deny 
Allow from all 
</Directory> 

JkUnmount /*.jsp ajp13 

</VirtualHost> 

現在,經過設置在Apache服務器的價值,並期待在標題和會看到

HTTP/1.1 200 OK 
Date: Mon, 01 Dec 2008 00:23:53 GMT 
Server: Apache/2.0.61 
Access-Control-Allow-Origin: * 
Keep-Alive: timeout=2, max=100 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: application/xml 

這基本上意味着你的web服務應用程序的服務器向任何呼叫者提供服務請求。

+0

這可能在Apache Tomcat配置中,而不使用Apache httpd嗎? – jgomo3 2013-03-14 06:58:33