我正在尝试发出跨域请求。我知道 CORS 并想测试来自例如 w3schools 的呼叫作为域。
我将 Jersey 用于 REST API 和 Apache 服务器,并执行了以下操作:
ResponseBuilder rb = Response.status(status).entity(mapper.writeValueAsBytes(data)).type(MediaType.APPLICATION_JSON);
**EDITED **
rb.header("Access-Control-Allow-Origin","*");
rb.header("Access-Control-Allow-Methods","GET, OPTIONS");
rb.header("Access-Control-Allow-Headers","*");
return rb.build
当我从浏览器中调用我的 API 查看我的响应标头时,我看到
Access-Control-Allow-Headers:*
Access-Control-Allow-Methods:GET, OPTIONS
Access-Control-Allow-Origin:*
Cache-Control:private
Content-Length:2523
Content-Type:application/json
Date:Wed, 2013 年 4 月 17 日 20:16:20 GMT
到期:星期三,1969 年 12 月 31 日 16:00:00 PST
服务器:Apache-Coyote/1.1
但是当我想使用不同的域(即在 W3 学校)真正测试它时,我有以下内容 -
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({
url: "url", // this is a real URL replaced with just url
type: 'GET',
success: function(content) { console.log("ok"); },
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("error");
},
complete: function() { console.log("complete"); }
});
});
});
</script>
</head>
<body>
<button>Send an HTTP GET request to a page and get the result back</button>
</body>
我总是得到一个 XMLHttpRequest 无法加载:url:。Access-Control-Allow-Origin 不允许来源http://www.w3schools.com 。
我的请求标头是
接受:*/*
来源:http ://www.w3schools.com 参考: http
://www.w3schools.com/jquery/tryit_view.asp?x=
0.8691769954748452
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64 ) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
我也尝试在 jsfiddle 中测试上述内容,但得到了同样的错误。
注意:我的 URL 仍然在我的本地主机上,这可能是问题吗?
我错过了什么?