关于ajax的跨域

2016-11-29 19:19:25来源:CSDN作者:Paranoia_ZK人点击

第七城市

所谓跨域:A工程中想B工程发送ajax请求

上边的需求实现为什么需要跨域

何谓同源:

        URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。

   同源策略:

        浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。 (白帽子讲web安全[1])

        从一个域上加载的脚本不允许访问另外一个域的文档属性。

具体的请自行百度,接下来给出具体实现代码

A工程的jsp页面的触发函数:

	function give(){  		$.ajax({  			url:'http://localhost:8080/TursmMntrng/yx/ceshi',  			type:"post",  			data:  				{  					'yus':'hha'  				},  			dataType:'jsonp',//jsonp格式  			jsonp:'callback',  			success:function(data){  				console.log(data);  			},  			error:function(XMLHttp,status){  				console.log(XMLHttp+"==>"+status);  			}  		});  	}
B工程的.java里的代码:

	@RequestMapping(value="ceshi",method=RequestMethod.POST)	public void ceshi(HttpServletRequest request,HttpServletResponse response) throws Exception{		request.setCharacterEncoding("UTF-8");		String callback = this.getRequest().getParameter("callback");		System.out.println("callback:"+callback);		String yus = request.getParameter("yus");		System.out.println("yus:"+yus);				response.setContentType("text/json;charset=UTF-8");                response.setCharacterEncoding("UTF-8");                response.getWriter().write(callback+"("+"{/"result/":true}"+")");                response.getWriter().flush();                response.getWriter().close();	}

页面的请求参数:

Request URL:http://localhost:8080/TursmMntrng/yx/ceshi?callback=jQuery1113008686712797497798_1480408173395Request Method:POSTStatus Code:200 OKRemote Address:127.0.0.1:8080


后台的数据打印:

callback:jQuery1113008686712797497798_1480408173395yus:hha


总结:

页面的ajax的jsonp的属性值必须和response的out对象返回的一致。callback的值相当于作为了一种跨工程的凭据,只有两个工程的传输凭证一致时,数据才能传输成功。




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台