【发布时间】:2020-01-07 12:00:04
【问题描述】:
这个问题真的让我发疯......我有 2 个 java Web 应用程序:appA 发布一个 REST 服务,它以 json 格式返回一些对象(包含图像),appB 使用服务并显示图像.在我的本地机器上它可以工作(虽然我看到了 CORS 错误)但现在我使用的是 Web 环境(Layershift)并且我收到一个错误“NetworkError: 404 Not Found - http://app-demo.j.layershift.co.uk/myservice/get/c80e9306105f4448?callback=myCallback&_=1477167892656”
我已经阅读了很多 CORS 和 JSONP 的示例,但我找不到我的代码有什么问题,谁能给点提示?
appA 中的控制器:
@RestController
public class MyController {
@RequestMapping(value="/myservice/get/{somevar}")
public @ResponseBody MyObject getMyObject (@PathVariable String somevar, HttpServletRequest request, HttpServletResponse response) {
MyObject obj = new MyObject();
//some logic
return obj;
}
}
appA 中的ControllerAdvice:
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("myCallback");
}
}
在appB中带有jsonp调用的javascript代码:
(function($) {
function myCallback(data) {
if (data.status == "OK") {
//shows the image contained
}
}
$.fn.callWithJsonP = function(somevar) {
$.ajax({
url: "myservice/get/" + somevar,
type: 'GET',
dataType: "jsonp",
jsonpCallback: "myCallback"
});
};
})(jQuery);
任何帮助将不胜感激,问候
PS: 也尝试在 Apache 中添加指令“Header add Access-Control-Allow-Origin "*"”,但结果相同。
【问题讨论】:
-
404 表示您正在尝试访问不存在的端点。您确定您的网址正确吗?
-
嗨@JoeAttardi,是的,网址是正确的
-
你为什么使用
jsonp他们在不同的域上?我也认为ajax url需要有一个起始/,例如/"myservice/get/" + somevar。需要看applicationContext -
嗨@user2181397,是的,他们在不同的域中。关于 ajax URL,我已对其进行了更改,因此可以在此处发布,但在我的实际应用程序中,它包含其他 Web 应用程序的完整 URL
-
如果您收到 404,则 URL 不正确。
标签: javascript jquery jsonp