前段时间和一个大厂的同事聊天,据说很NB,然后老大问了我一个问题,“如何解决跨域-实际生产前端的领域问题?”我当时就回复了我们现在的情况需要服务器做一些配合来解决,然后老大很不满意,暗示我,你用过JSONP吗?我当时觉得不可思议。实际生产中是否只有get请求?而且,这个东西在实际生产中基本用不到。开始怀疑自己是不是落伍了,所以今天就大致梳理一下这方面的知识点。当浏览器向不同域请求资源时,由于同源策略的影响,请求会失败。这就是通常所说的“跨域问题”。作为前端开发,经常会遇到跨域。我们通常所说的JS跨域,就是在处理跨域请求的过程中,技术端会更多的是浏览器端。那么什么是跨域呢?出于安全原因,JavaScript不允许跨域调用其他页面上的对象。当协议、子域名、主域名、端口号中的任何一项不同时,就是异域,即认为是跨域。跨域请求时,不是不能发送请求,可以发送请求,服务端可以正常接收请求并返回结果,但是结果被浏览器拦截,正是因为同一个限制——源策略和同源策略的要求只有协议、域名、端口号完全一致才能正常通信。需要说明的几点:1.如果是协议和端口导致的跨域问题,前端也是束手无策。2、在跨域问题上,只是通过访问URL的头部(.com或.cn及前面部分)来判断域,而不是根据域名对应的IP地址是否相同来判断。3.在实际生产中,JSONP有很大的局限性,基本不会考虑,用到的机会很小。我们目前的情况是在服务器的header中添加配置:header("Access-Control-Allow-Origin:*");标题(“访问控制允许方法:POST,GET”);有什么好的解决办法吗?请赐教
