关于Ajax跨域启用CORS解决方案的思考

Ajax跨域启用CORS解决已经不用在这里赘述,今天又度娘了一把,无非是在JSP中设置response的响应头:Access-Control-Allow-Origin,为* 或者设置为目标域站点
或者response.setHeader("Access-Control-Allow-Origin","*");这里是我在自己本地用两tomcat模拟这种情况,但是这两种情况都存在潜在的危险,做为一个严谨的web开发人员来,这两种做法的安全性完成不够,设置成*的同仁们毫不客气地说,是对自己写的程序的不负责,也是对别人的不负责,原因有两点:1,这里设置成*完,表示任何网络请求都可以访问该目标站点,这为黑客的攻击提供了方便,黑客人员完全不需要费什么劲,就可以截获目标站点的数据。2、把这种解决方案的文章发出来后,其它遇到Ajax跨域问题,也采用同样的解决办法后,其开发出来的web站点也同时会存在这样的潜在安全威胁。 第二种当然就是直接在setHeader里设置站点名,这种方式看似要安全些,其实不然,因为黑客同样可以自行模拟正常的请求(只要拼出合法请求站点的正确域名),然后也能截获目标站点的数据。 所以前面提到的两种方式都有存在一定的问题,个人的理解,应该采用如下的方式: 在需要请求的目标站点页面设置Header的Access-Control-Allow-Credentials为true: response.setHeader("Access-Control-Allow-Credentials","true"); --这里表示需要发送跨域证书,此时Access-Control-Allow-Origin属性设置为*将失效。然后再设置Access-Control-Allow-Origin具体站点值,最后,当发起Ajax请求的JSP页面,需要使用数字证书、签名等技术(防止黑客伪造Ajax请求),被请求的站点通过这些验证后,才继续进行跨域请求动作。 以上说法皆是个人观点,如有不对欢迎讨论,拍砖。

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 😃 https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...