可能的重复项:
跨域XHR/AJAX:可能的解决方法?
我试图从我的Javascript中xmlHttpRequest
到在另一台服务器上运行的Restful Web服务。我收到一个 JS 错误,指定
"XMLHttpRequest cannot load 'URL'.Origin 'localhost' is not allowed by Access-Control-Allow-Origin.
谷歌搜索后,我知道我不能跨域进行XmlhttpRequest
。
我想知道从我的 Javascript 实现跨域 Web 服务调用的最佳方法是什么。
我正在我的应用程序中
使用它
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});
您需要在服务器上进行更改以允许来自本地主机服务器的请求。更改 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 服务应用程序的服务器正在向任何调用方提供请求。