大家好我正在使用spring3.0 restful webservice.i能够在我从同一台服务器(即我的weblogic服务器)调用方法时调用我的方法。但是如果我想消费\命中相同的方法从另一台服务器(即我的jboss服务器)然后它没有击中我在weblogic服务器上的rest方法。
在下面的代码中,如果我在weblogic jsp页面中编写此代码并调用它返回正确的值,我可以在我的网页上显示相同的内容。但是如果我将相同的代码复制到JBOSS服务器中的jsp(我访问我的休息服务的不同项目)然后它没有达到我的方法。 ---------------------------------------
$.ajax({
url: "http://test.abc.org:7001/SpringRestService/restful/products/ALL/ALL/ALL/ALL.json",
type: "GET",
processdata: true,
dataType: "json",
contentType: "application/json;",
beforeSend: function () { },
headers :
{
"Content-Type" : "application/json",
"Accept" : "application/json",
"Access-Control-Allow-Origin":"http://its-ims002.neahq.nearoot.org:7001/"
},
success: function (data)
{
bindEvent.loadGridData(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
try
{
alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown);
}
catch (ex) { alert("Exception occured.. "); }
finally { }
}
});
下面是我保存在我的weblogic服务器中的java代码,我必须使用我的ajax调用从jboss服务器命中。
---------------------------------
@Controller
public class HelloWorldController1 {
@RequestMapping(value = "/products/{userName}/{year}/{status}/{stateId}", method = RequestMethod.GET,consumes="application/text")
public ModelAndView getTextFromURL(@PathVariable("userName") String userName, @PathVariable("year") String year,
@PathVariable("status") String status, @PathVariable("stateId") String stateId) {
List<Abc> list= new ArrayList<Abc>();
list= service.products(userName, year, status, stateId);
ProductList productList = new ProductList (list);
ModelAndView mav = new ModelAndView();
mav.setViewName("index1");
mav.addObject("list", productList );
return mav;
}
}
答案 0 :(得分:0)
即使您为其他(jboss)服务器指定了“Access-Control-Allow-Origin”,浏览器也可能不允许这样做,因为这违反了“同一来源政策”
如果您的服务返回json,您可以通过使用脚本实用程序(如“dojo.io.script”)作为json或javascript不受“相同原始策略”的影响来轻松完成此操作。
如果它不是json,除了“dojo.io.iframe”之外可能没有任何其他选项,如果这适合你。希望这会有所帮助...
编辑:我看到你的服务返回JSON,你尝试过使用dojo.io.script吗?或者您的JS框架具有的任何其他类似实用程序。