【问题标题】:json response data not available in cross domain requestjson 响应数据在跨域请求中不可用
【发布时间】:2015-03-21 10:58:45
【问题描述】:

我正在使用 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";
}

服务器调用没问题。但执行后它总是进入错误块。错误块中警告的“数据”没有从控制器发送我的响应数据。但是当我在firebug中检查时,我可以看到相应请求的响应是控制器发送的响应文本。我无法弄清楚我错过或做错了什么

【问题讨论】:

  • 那不是 jsonp 输出。如果您启用 CORS 输出,也可以发送 json。 enable-cors.org
  • 这不是 JSONP。除非接收域支持,否则你会被Same Origin Policy屏蔽
  • @Rory McCrossan 你能告诉我如何让我的服务器响应这些请求吗?

标签: jquery spring-mvc cross-domain jsonp


【解决方案1】:

这确实与Same Origin Policy有关,因此在浏览器中强制执行安全规则。

处理这些情况的两种方法:

请注意,您可以使用 4.1.0 之前的第三方库或自定义代码来实现这两者 - 我只是指出官方 Spring 支持。

【讨论】:

  • 不要忘记接收 API 需要同时使用 CORS 和 JSONP - 您不能在没有第三方支持的情况下更改代码。
猜你喜欢
  • 2012-03-18
  • 1970-01-01
  • 2013-03-02
  • 2016-07-20
  • 2011-01-04
  • 2016-06-23
  • 2018-01-05
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多