IT虾米网

跨域问题

luoye 2022年05月14日 程序员 161 0

服务器与服务器之间发起的请求时不存在跨域的说法的,跨域是浏览器同源策略引起的,即:从某一个域请求其他域的各类资源,其中只要两个地址的域名、端口以及协议有不同的地方就会视为跨域,跨域资源无法直接获取,这是浏览器针对javascript发起的安全限制
ng一般可以通过反向代理或者access等配置解决跨域。
反向代理:是将被访问的服务端地址反向代理至当前ng的域名地址下,来解决跨域的问题。
access配置:通过对response加上允许跨域的头字段,浏览器收到response之后判断可跨域从而访问成功。

        add_header Access-Control-Allow-Methods *; 
        #   预检命令的缓存,如果不缓存每次会发送两次请求 
        add_header Access-Control-Max-Age 3600; 
        #   带cookie请求需要加上这个字段,并设置为true 
        add_header Access-Control-Allow-Credentials true; 
        #   表示允许这个域跨域调用(客户端发送请求的域名和端口)  
        #   $http_origin动态获取请求客户端请求的域   不用*的原因是带cookie的请求不支持*号 
        add_header Access-Control-Allow-Origin $http_origin; 
        #   表示请求头的字段 动态获取 
        add_header Access-Control-Allow-Headers  
        $http_access_control_request_headers;

也可以在ng用过if语句拦截无origin的请求

set $origin_flag 0; 
if ($http_origin != '') { 
        set $origin_flag "${origin_flag}0"; 
} 
if ($http_origin !~ "(localhost(:)?(\d+)?)|((18tracking)\.(com|cn))$") { 
        set $origin_flag "${origin_flag}0"; 
} 
if ($origin_flag = "000") { 
        return 403; 
} 

评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Linux系统实战部署私有云网盘