跨域的常见解决方案

什么是跨域:跨域是一种安全机制,浏览器有一种策略为同源策略,同源策略规定了部分请求不能被浏览器所接受。

什么是同源策略:url地址由三部分组成分别是协议、域名(ip地址)、端口。只有协议、域名、端口号都一致时,才被称为同源。而同源策略规定,只有发送请求的那一边和接受请求的那一边处于同源的情况下,浏览器才会接受响应。

常见的解决跨域的方法

1、jq的ajax自带解决跨域的方法。底层原理采用的JSONP的跨域解决方案。如下


2、动态创建script标签解决跨域。如下


3、前端代理解决跨域,在配置文件config.js中配置proxy

4、服务端代理(Nginx代理)nginx代理一般使用在生产环境。是服务端解决跨域的一种方案。注意,nginx配置完代理后需要重启nginx,nginx代理是生产环境的常用方案。

#如果监听到请求接口地址是 www.xxx.com/api/page ,nginx就向http://www.yyy.com:9999/api/page这个地址发送请求

server {

     listen 80; 

     server_name www.xxx.com;#判过滤出含有api的请求

    location /api/ {

     proxy_pass http://www.yyy.com:9999;#真实服务器的地址

    }

}

5、添加响应头解决。在响应头中的 Access-Control-Allow-Origin 字段中携带上需要访问的地址。这就等于告诉浏览器,这个地址是安全的,无需拦截。当然,我们也可以进行所有域名均不拦截的设置Access-Control-Allow-Origin':'*'。代表所有域名均不拦截。并不建议此种方案,因为安全性不高。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容