Nginx允许跨域和禁止跨域操作

简介:

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,如需转载请自行联系原作者
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
2月前
|
前端开发 应用服务中间件 Linux
nginx解决springcloud前后端跨域问题,同时配置ssl
nginx解决springcloud前后端跨域问题,同时配置ssl
|
9月前
|
安全 前端开发 应用服务中间件
Nginx 轻松搞定跨域问题
Nginx 轻松搞定跨域问题
|
6月前
|
应用服务中间件 nginx
百度搜索:蓝易云 ,Nginx设置禁用 OPTIONS 请求以及允许跨域教程!
通过按照上述步骤,在Nginx中设置禁用OPTIONS请求和允许跨域。请确保在编辑Nginx配置文件时使用正确的服务器名称或IP地址。
62 0
|
4月前
|
安全 JavaScript 应用服务中间件
Nginx 跨域解决方案
跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器,它允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。 跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是GET以外的 HTTP 请求
|
5月前
|
应用服务中间件 nginx
nginx解决本地跨域问题
nginx解决本地跨域问题
|
8月前
|
JavaScript 前端开发 应用服务中间件
Vue 前端接口跨域,本地 Nginx 代理配置
Vue 前端接口跨域,本地 Nginx 代理配置
315 0
|
9月前
|
缓存 负载均衡 JavaScript
Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...
Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...
229 0
|
9月前
|
网络协议 Java 关系型数据库
Linux常用命令大全(极简速查版本)(包含操作nginx、mysql)
Linux常用命令大全(极简速查版本)(包含操作nginx、mysql)
93 0
|
10月前
|
负载均衡 前端开发 JavaScript
【Node.js实战】一文带你开发博客项目之联调(导入HTML、Nginx反向代理、CORS解决跨域、与前端联调)
【Node.js实战】一文带你开发博客项目之联调(导入HTML、Nginx反向代理、CORS解决跨域、与前端联调)
168 1
|
11月前
|
缓存 前端开发 NoSQL
Spring Boot2.x-13前后端分离的跨域问题解决方法之Nginx
Spring Boot2.x-13前后端分离的跨域问题解决方法之Nginx
255 0