跨域的解决方案

jsonp解决的原理

jsonp:动态创建jsonp:动态创建script标签,在script里把请求发出去。前后台约定请求带某一个参数时即为跨域请求,比如callback,当前台发送的请求带callback参数时,后台即知道这是一个跨域请求,就会做出对跨域请求的响应,生成动态script标签,返回js脚本,这个脚本里就是一个函数的调用,函数名就是动态生成script标签时callback的值,里面传递的是请求响应的json数据对象。
弊端:需要后台改动代码支持;只支持GET请求;发送的不是xhr请求而是jsonp请求,失去了xhr异步、事件等的特性。


其他解决方法:

浏览器解决:修改启动浏览器属性。弊端:要每个用户都去修改。

后台解决:分为服务端实现和代理服务器(nginx或者apache 虚拟主机)配置实现,前者添加一些响应头允许跨域,后者配置代理服务器。
前台解决:配置反向代理服务器nginx或者apache
前后台代理服务器解决的区别:主要是体现在请求路径上,前台解决(隐藏跨域)使用的是相对路径,在浏览器地址栏看见的都是同一个域名的地址,后台解决(支持跨域)使用的是绝对路径。

普及:
反向代理:反向代理是代理服务器的一种,是作为服务器端(如Web服务器)的代理使用。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,而不是客户端,使得客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。
正向代理:作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址。客户端借由正向代理可以间接访问很多不同互联网服务器(簇)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,使客户端不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
虚拟主机:指多个域名指向同一个服务器,服务器根据不同的域名把请求转到不同的应用服务器。看上去是有多个主机,实际上只有一个主机。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页