服务器与服务器之间发起的请求时不存在跨域的说法的,跨域是浏览器同源策略引起的,即:从某一个域请求其他域的各类资源,其中只要两个地址的域名、端口以及协议有不同的地方就会视为跨域,跨域资源无法直接获取,这是浏览器针对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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。