跨域无法携带cookie的问题,可能是协议不一样,一个是http,一个是https。
我们接手的系统,前端上传组件是webuploader,新需求需要调用别的组的上传接口,需要携带cookie。但是存在跨域问题。
跨域携带cookie的问题需要前后端同步进行修改。
后端:通过在filter里对response设置允许跨域的支持
前端:修改组件实例化时设置的参数withCredentials为true,表示允许携带
var uploader = WebUploader.create({
//......
withCredentials: true,// 跨域时,是否允许携带cookie, 只有html5 runtime才有效,默认false
//......
});
以上前后端设置完后按理说就可以了,但在我们系统中还是不行,cookie还是带不过去。
找了很久,原因竟然是上传接口为https的,我们的站点是http的。
上传接口也支持http,我们改为http的就可以了。
刚开始和上传接口的负责人联调接口时,其实也是花了很多时间。我们站点上传一直不成功,一直报跨域,但是上传接口负责人说:其他渠道调这个接口可以上传成功。意思就是是我们站点的原因呗,后来才知道那家伙把Access-Control-Allow-Origin写死了,怪不得别人能调通。。。。但是写成上面那种方式,还是不行。。。
于是就一直百度找原因,找啊找,后来求助专业的前端,人家用的都是elementui,然后我就引入elementui的上传组件,是可以上传了,但是想到还得兼容,适配成系统现有的UI,就头大,结果弄了半天,又改成现有的webuploader了。所以就继续找解决方案被,还是找不到,后来求助我们技术经理,看了一会儿发现我们请求的接口是https的,而我们站点是http,这才发现问题。不得不说姜还是老的辣。我们改为http的就好了。