Nginx默认是禁止跨域操作,可能说到跨域好多伙伴会有点迷糊,什么叫跨域?为什么不能跨域呢?  看下面小编的详解。

url
说明 是否跨域
http://www.cnblogs.com/a.js

http://www.a.com/b.js

不同域名
http://www.a.com/lab/a.js

http://www.a.com/script/b.js

同一域名下不同文件夹
http://www.a.com:8000/a.js

http://www.a.com/b.js

同一域名,不同端口
http://www.a.com/a.js

https://www.a.com/b.js

同一域名,不同协议
http://www.a.com/a.js

http://70.32.92.74/b.js

域名和域名对应ip
http://www.a.com/a.js

http://script.a.com/b.js

主域相同,子域不同 是(cookie不可访问)
http://www.a.com/a.js

http://a.com/b.js

同一域名,不同二级域名(同上)

禁止跨域的原因是这样可以更安全,据小编了解假如浏览器记录了a.com的网站上的cookie,拿到了b.com的网站的进行了验证这样就存在了安全风险。小编这块对安全的需求不是了解特别透彻有必要加强。

解决方案:

因为nginx默认是禁止跨域访问的,所有当跨域请求数据的时候拿不到相应的数据,特别是字体。

生产环境介绍:

访问www.a.com的时候,需要调用www.b.com下的css、js、image、字体等,因为设计到跨域,所以nginx拒绝了我的字体的请求,所以在www.b.com下面的server中加了一个location即可。

1
2
3
4
# 由于字体使用跨域的方式进行的调用,默认浏览器拒绝访问,加上这个location就可以在其他域名下访问这个域名的字体了
    location ~* \.(eot|ttf|woff|svg|otf|woff2)$ {
             add_header Access-Control-Allow-Origin *;
    }


生产环境遇到的问题用上述方法解决了,下面说说如何允许跨域:

在需要允许跨域的server中下面加上下面三句代码即可:

1
2
3
4
5
6
7
8
9
# 该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。
add_header 'Access-Control-Allow-Origin' '*';
# 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。
#  默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,
#  Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,
#  如果服务器不要浏览器发送Cookie,删除该字段即可
add_header 'Access-Control-Allow-Credentials' 'true';
# 该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法,上例是PUT。
add_header 'Access-Control-Allow-Methods' '*';

本文转自 xinsir999 51CTO博客,原文链接:http://blog.51cto.com/xinsir/1953251,如需转载请自行联系原作者

Nginx允许跨域和禁止跨域操作相关推荐

  1. 浏览器禁止跨域请求json数据解决方法--jsonp

    浏览器禁止跨域请求json数据解决方法--jsonp 参考文章: (1)浏览器禁止跨域请求json数据解决方法--jsonp (2)https://www.cnblogs.com/uyisi/p/56 ...

  2. Nginx解决前端调用后端接口跨域问题

    Nginx解决前端调用后端接口跨域问题 参考文章: (1)Nginx解决前端调用后端接口跨域问题 (2)https://www.cnblogs.com/wangymd/p/11200746.html ...

  3. 如何在nginx下配置网关,实现跨域请求

    1.在nginx下配置网关,实现跨域请求 ​ 首先进入虚拟机,打开nginx,开机自启命令 docker update nginx --restart=always 进入nginx下的conf目录下 ...

  4. 详解nginx代理天地图做缓存解决跨域问题

    这篇文章主要介绍了详解nginx代理天地图做缓存解决跨域问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 作为一个GISer开发者,天地图是经常在项目中以底图的形式出现 ...

  5. 入门Nginx之-静态资源服务器及跨域配置

    简介 这里静态资源就以之前的一个项目文章地址为例,源码 Github,项目本身很简单,只是分别对第三方的服务端.自己的服务端发起请求. 不论是调用第三方服务端接口,还是自己的后端服务,如果跨域未在服务 ...

  6. 什么是跨域,为什么浏览器会禁止跨域,以及实现跨域的几种方式

    首先我们来想一想 为什么会有跨域这个名词的出现呢? 跨域又是什么呢?为何要跨域? 浏览器的同源策略又是什么?怎么解决? jsonp又是什么? 跨域的原理又是什么呢? 名词解释: 1.什么是跨域 跨域的 ...

  7. form表单会跨域_前端跨域So Easy

    跨域 本文主要介绍JSONP.CORS两种跨域方式,后台采用Koa模拟,真正的目标是理解整个跨域的流程.至于什么是跨域和浏览器同源策略的问题,请同学们自行百度. JSONP JSONP 其实是一种tr ...

  8. 跨域问题_跨域问题如何解决?

    " 今天的内容比较大众,相信广大程序猿都有遇到过,那么咱们就不多BB了,直接往下看." 首先聊聊为什么会出现跨域问题?跨域是什么? 域(Domain)是Windows网络中独立运行 ...

  9. 什么是跨域?以及跨域的解决方案!

    什么是跨域 跨域,是指浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 同源策略限制了一下行为: Cookie.LocalStorage 和 ...

最新文章

  1. python语言能干什么-python语言可以干什么
  2. Machine Learning from Start to Finish with Scikit-Learn
  3. Java多线程学习三十三:Future 的主要功能是什么?
  4. SpringBoot中静态资源和首页定制
  5. Opencv_缺少CV_CAP_PROP_FRAME_WIDTH
  6. VB求最大公约数的两个例子
  7. 新手linux安装vasp_史上最简单的VASP安装教程-非虚拟机
  8. 价值800新视界影视源码全开源源码
  9. 个人记录——洛谷试炼场,BOSS战!【新手村】
  10. 虚拟服务器共享文件设置,虚拟机共享文件夹设置流程
  11. Renesas CS+ for ca cx入门(一)
  12. archivelog模式和flashback db以及guarantee restore point之间的相互制约关系!
  13. pycharm设置字体样式_pycharm设置主题/默认格式/字体
  14. 二、谈谈对数据库中索引的理解
  15. 德国 PC Welt 杂志和 Avira 推出免费使用6个月 Avira AntiVir Personal Premium 活动
  16. 不畏浮云遮望眼,自缘身在最高层
  17. 地鼠的困境(最大匹配)
  18. 低代码开发平台有什么价值
  19. 转自(阿里技术)技术实力的迷思
  20. 《音视频直播------总体概述》

热门文章

  1. 【MySQL】MySQL的核心——存储引擎
  2. CNN网络优化加速开源代码汇总
  3. 《今日简史》读书笔记(未完待续)
  4. ImportError: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`
  5. 解决Redis报错:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist
  6. shell中的执行流控制
  7. mysql 定义class_MySQL数据库类的定义
  8. 如何保证缓存和数据库的双写的一致性
  9. java 时间戳加密_加密PHP中的时间戳并用Java解密
  10. mysql多语句查询结果_MySQL查询从多个选择语句获取结果?