Nginx跨域配置

跨域是什么?

跨域是浏览器加载了与当前域名、协议、端口不同另一站点下的资源,这与各大支持JavaScript的浏览器的同源策略是违背的。所谓同源策略,它是由 Netscape 提出的一个安全策略,它是浏览器最核心也是最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能都会受到影响,现在所有支持JavaScript的浏览器都会使用这个策略。

规定:浏览器要求,在解析Ajax请求时,要求浏览器的路径与Ajax的请求的路径必须满足三个要求,则满足同源策略,可以访问服务器。

要求:协议、域名、端口号都相同,只要有一个不相同,那么都是非同源

处理方式

在配置中增加相应的add_header参数,特别需要注意“OPTIONS预检请求”问题,可直接返回204状态码处理该问题。

server
{
    listen 80;
    server_name www.abc.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/abc;
    
    # 跨域处理
    add_header Access-Control-Allow-Origin * always;
    add_header Access-Control-Allow-Methods 'GET,POST,PUT,OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    if ( $request_method = 'OPTIONS') {
      return 204;
    }

    # 日志文件
    /www/wwwlogs/api-rep.fuqimm.cn.log;
    error_log  /www/wwwlogs/api-rep.fuqimm.cn.error.log;
}

参数说明

Access-Control-Allow-Origin:响应头表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以。(可选值 true/false )

Access-Control-Allow-Headers:表示此次请求中可以使用那些header字段

Access-Control-Allow-Methods:表示此次请求中可以使用那些请求方法(可选值 GET/POST/PUT/OPTIONS/DELETE)

注意:

header头中若增加了参数,Access-Control-Allow-Headers中必须增加相应参数。如接口做了签名校验字段signature,相应的Access-Control-Allow-Headers也需要增加。

其次关于非200状态码的异常错误导致成该接口跨域时,Access-Control-Allow-Origin中always必不可少。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值