【分享】记一次前端跨域请求后台无法set-cookie经历

来源:互联网 发布:unity3d建模 衣服褶皱 编辑:程序博客网 时间:2024/05/17 02:43

cookie都设不了,接下来还怎么开发?


环境重构:

        1、后端前端分离(即后端和前端不在同一个项目形成跨域请求)

        2、前端 AJAX 请求

        3、后端使用的是Java、服务器使用的是Tomcat(后端用什么语言估计都一样)


需求:

        1、总之就是要设置一个cookie给前端,通过这个cookie做后续工作。

        2、我是因为要用到shiro所以必须要设置cookie。


问题描述:

        当我们从 A网站 AJAX访问 B服务器 时,默认是不可以访问的,因为违反了浏览器同源策略。但是现在解决这个问题的方法很普遍了,可以去搜一下解决方案,这里遇到的问题是,当 A网站 AJAX访问 B服务器 时,B服务器试图在响应中给A网站设置cookie信息,告诉A网站要将这个cookie存起来,浏览器当然是没有成功。


问题思考:

        当使用chrome这样的浏览器,当然F12是第一反应,这时候会发现我的请求成功了,并且200响应回来了,仔细查看后会发现,在响应中有set-cookie属性并且有值,这个值正是后台试图给前端设置的cookie值。浏览器实际上是接收到cookie值,但是这个cookie并没有设置到本地。


问题解决:

        这个现象应该属于跨域设置cookie的问题,网上很多解决方案都是在ajax请求上加上一个属性,后台也要设置响应头属性,这里就不说这个方法了,我也没试过成不成。

        还有一种现象就如我这样,使用的是tomcat部署java服务通常会在地址后面带上项目名,例如:www.A.com 访问服务器 www.B.com/MyProjectName。

        因为看了一篇文章url: http://blog.csdn.net/zhouziyu2011/article/details/61200943,不是很懂,但是我后来将服务器的项目名给去掉了,就是直接访问www.B.com即可以访问服务器,cookie就设置成功了。