json 跨域请求中的响应数据不可用
json response data not available in cross domain request
正在使用 jquery
发出跨域请求
function getTrackingWigetURL() {
$.ajax({
url: 'http://anotherdomain/getdetails',
dataType: 'jsonp',
jsonpCallback: 'MyJSONPCallback',
success: function(data){
alert(data);
},error: function(response){
alert(response);
}
});
}
我的控制器代码是
@RequestMapping(value = "/getdetails")
public @ResponseBody
String getdetails(HttpServletRequest request, HttpServletResponse response) {
return "test";
}
服务器调用正常。但执行后总是进入错误块。错误块中警告的 "data" 没有从控制器发送我的响应数据。但是当我检查 firebug 时,我可以看到相应请求的响应是从控制器发送的响应文本。我不知道我错过或做错了什么
这确实与 Same Origin Policy 有关,因此在浏览器中强制执行安全规则。
处理这些情况的两种方法:
- 使用 JSONP (Spring MVC supports this as of 4.1.0)
- CORS (Spring MVC will support this in the next version)
请注意,在 4.1.0 之前,您可以使用第三方库或自定义代码实现这两者 - 我只是指出官方 Spring 支持。
正在使用 jquery
发出跨域请求function getTrackingWigetURL() {
$.ajax({
url: 'http://anotherdomain/getdetails',
dataType: 'jsonp',
jsonpCallback: 'MyJSONPCallback',
success: function(data){
alert(data);
},error: function(response){
alert(response);
}
});
}
我的控制器代码是
@RequestMapping(value = "/getdetails")
public @ResponseBody
String getdetails(HttpServletRequest request, HttpServletResponse response) {
return "test";
}
服务器调用正常。但执行后总是进入错误块。错误块中警告的 "data" 没有从控制器发送我的响应数据。但是当我检查 firebug 时,我可以看到相应请求的响应是从控制器发送的响应文本。我不知道我错过或做错了什么
这确实与 Same Origin Policy 有关,因此在浏览器中强制执行安全规则。
处理这些情况的两种方法:
- 使用 JSONP (Spring MVC supports this as of 4.1.0)
- CORS (Spring MVC will support this in the next version)
请注意,在 4.1.0 之前,您可以使用第三方库或自定义代码实现这两者 - 我只是指出官方 Spring 支持。