一、jsonp可以跨域,原理可以用下面的代码展示:
var script= document.createElement("script"); script.type = "text/javascript"; script.src = "url"; document.getElementsByTagName("HEAD")[0].appendChild(script);
在处理cookie跨域时闹了一个乌龙:
具体不详述了,cookie有domain和path属性,前后端都可以进行设置。
linux.zhang.com和windows.zhang.com 同属于.zhang.com域。
总结:跨域问题的产生是浏览器的作茧自缚,script,img等有src属性的标签没有跨域的问题,直接从指定站点下载内容,jsonp就是这个原理。而使用ajax访问外域时,浏览器确实发请求了,也收到服务器的响应了(通过抓包得知),但是由于响应头中没有Access-Control-Allow-Origin头,故意屏蔽了。所以,如果服务器的响应设置了相关头部,浏览器就会显示。服务器可以在filter或interceptor中统一设置响应头,来解决跨域。
二、springMVC在返回中文时,需要设置编码
@RequestMapping(value = "/something", produces="text/html;charset=UTF-8")