昨天前台系统的首页左侧类目出现了问题,前台访问后台JS报错,这里主要是因为跨域的问题。
1.1、 什么是跨域问题?
l 1)什么是跨域?
http://www.a.com è http://www.b.com 不同域名,是跨域
http://www.a.com è http://www.a.com:8080 域名相同,端口不同,是跨域
http://a.a.com è http://b.a.com 不同二级域名,是跨域
http://www.a.com è http://www.a.com/api 同一域名的不同路径,不是跨域
可以看出来,以下情况都属于跨域:
u 不同域名
u 不同二级域名
u 同一域名不同端口
但是跨域并不一定会有问题,何时会有问题?
l 什么时候出现跨域问题?
跨域问题出现的场景:浏览器对ajax请求的限制,不允许跨域请求资源。其它情况没有跨域问题。
如何解决跨域问题?
1.1、 JSONP解决跨域原理
1.1.1、 模拟服务端,响应一段字符串
我们在后台系统(taotao-manage)中编写一个JSP页面,输出一段字符串,模拟Servlet服务端:
我们发现,请求URL的后面自动拼接了参数:callback=jQuery11130... ,这是JQuery自动生成的回调函数名称,这样后台程序就得知是跨域请求,然后调用这个回调函数,传递数据。
问题:JSONP有什么缺陷?
JSONP只能发出get请求。无法发出POST请求。
问题:如果必须发出POST跨域请求怎么办?
1、 CORS
2、 使用Nginx来进行跨域