這個問題真的讓我瘋狂......我有2個Java Web應用程序:發佈REST服務的appA,它以json格式返回一些對象(它包含一個圖像),以及消耗的appB該服務並顯示圖像。在我的本地機器上它可以工作(雖然我看到了CORS錯誤),但現在我正在使用Web環境(Layershift),並且出現錯誤「NetworkError:404 Not Found - http://app-demo.j.layershift.co.uk/myservice/get/c80e9306105f4448?callback=myCallback&_=1477167892656」
我一直在閱讀很多的CORS和JSONP的例子,但我找不到我的代碼有什麼問題,任何人都可以提供一個提示?不能讓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;
}
}
ControllerAdvice中的appA:
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("myCallback");
}
}
的JavaScript在appB的JSONP調用代碼:
(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:也嘗試添加指令「頭添加Access-Control-Allow-Origin「*」「,但結果相同。
404意味着您正在嘗試訪問不存在的端點。你確定你有正確的網址嗎? –
嗨@JoeAttardi,是的,網址是正確的 – maxivis
爲什麼你使用'jsonp'他們在不同的域?我也認爲ajax url需要有'/'例如'/「myservice/get /」+ somevar'。需要查看'applicationContext' – brk