那些跨域项目所遇到的坑

01-242040楼主 | 收藏 | 举报

       因为项目需要,自站君需要把无数个不同域名的网站与自站进行数据交互,在经历多个苦逼的日日夜夜,总算找到了相对完美的解决方案。相信你一定问过度娘,采用P3P的方式,但自站君选择了最新的CORS方案,因此本文重点讲解CORS。
      CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。文字少说,直接上代码:
  
域名A:www.a.com 下的文件index.php进行前端跨域POST提交到域名B,index.php代码如下 QQ截图20170124232508

域名B:www.b.com,下customlogin.php接收处理来至A的请求,代码如下 

其实采用跨域CORS解决方案,就是简单在传统POST的基础上新增以上3行代码,是不是很简单?要是这么简单自站君就不会写这篇文章了
CORS的弊端就是有些旧版浏览器不支持,不过随着浏览器内核的发展,你基本不用担心这个问题,唯独要担心的是苹果safari的安全机制,默认设置cookie如下
 
 QQ截图20170124232704
        自站君遇到这个问题的时候,一直认为是自己代码写得太简单了(确实也很简单),于是添砖加瓦仍然无法解决,本想放弃,毕竟只要用户设置下safari就可以解决的,但是基本所有用户不会迎合你的网站,因此这个问题还得解决

       最后翻遍很多海外技术论坛,才发现不只是广大码农遇到这个问题,就连天猫、淘宝也遇到这个头疼的问题,甚至GOOGLE公司为了解决这个问题,采用safari漏洞进行提交,结果还被苹果公司索赔几千万,实力坑爹。。。(当然苹果公司也是为了用户安全)
  
       毫无疑问遇到这样的问题,只能顺应苹果公司,牺牲用户体验换取跨域需求,于是自站君在A站提交时,先跳转到B站设置cookie以及SESSION,再自动跳转回A站(其他浏览器是无需这个跳转)
  QQ截图20170124232916
 
  完

本文为自站原创文章,除收款通可自由转载外,其他平台请标明出处