javascript 跨域

mark一下,昨天做测试的时候,发现了用ajax做服务器数据访问的时候出现了跨域问题,代码如下:

客户端:

var ajaxtest = function() { alert("ajax测试"); var request = new XMLHttpRequest(); var href = "http://183.26.254.109/fcsapp77/Useraccount_selectonebyemail.do?string=1"; var method = "post" request.open(method, href, true); request.send(); request.onreadystatechange = function() { var object = request.responseText; alert(object); } }


服务i端是返回json数据,但是失败了,控制台输出经过百度之后,发现是需要解决跨域问题,发现了好几种解决方法,比较之后,上了最简单的一种,就是在w3c已经解决了这个问题的前提下,在响应头中添加

response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "post");

具体代码如下:

@ResponseBody @RequestMapping(value="/Useraccount_selectonebyemail.do",method=RequestMethod.POST) public String selectonebyemail(String string, HttpServletRequest request, HttpServletResponse response) { SqlSession session = new MySqlSession().getsqlseession(); response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Methods", "post"); UserAccountInte mapper = session.getMapper(UserAccountInte.class); Useraccount what = mapper.selectonebyemail(string); session.close(); System.out.println(packJson.getone(what)); return packJson.getone(what).toString(); }

之后再测试。发现问题已解决,这是因为w3c已经把问题解决了,所以就不再需要使用jsonp来包装,也不用使用iframe了,不过现在又要问题了

!!!就是我设置响应头的返回格式为application/json。但是在火狐上看,却还是html,尴尬,这是要解决的新问题

------------------------------------------------------------------------------第二天--------------------------------------------------------------------
问题已经解决了,就是对于就送数据的传送,不需要设置contenttype,是我在设置读取json格式的时候,在客户端没有设置为下面这种:

var test=eval(“(”+object+“)”);


我在使用时候设置为{}了,而要查看返回时候是不是json格式的数据,可以在火狐里面查看

你可能感兴趣的:(javascript,javascript)