关于跨域

一、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")

原文地址:https://www.cnblogs.com/allenwas3/p/7417587.html