跨域Web服务调用

时间:2011-12-29 05:37:01

标签: web-services jquery cross-domain

  

可能重复:
  Cross-domain XHR/AJAX : a possible workaround?

我尝试在我的Javascript中执行xmlHttpRequest到另一台服务器上运行的Restful Web服务。我指定了

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

谷歌搜索后我知道我不能跨域XmlhttpRequest

我想知道从我的Javascript实现跨域Web服务调用的最佳方法是什么。

2 个答案:

答案 0 :(得分: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});

答案 1 :(得分:0)

您需要在服务器上进行更改以允许来自localhost服务器的请求。您可以在apache的httpd-vhosts.conf文件中更改设置:

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.com
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服务应用程序的服务器正在向任何调用者提供请求。