原文链接:http://www.studyshare.cn/software/details/1173/0

一、跨域

跨域由来,是因为W3C组织制定的浏览器安全规范,不允许一个域名内的网站在没有别的域名允许的情况下去访问。因此解决跨域问题有以下两种方案

1、jsonp方案

w3c制定的规则不允许ajax跨域请求,但却允许script标签发起跨域请求,因此有人便扩展的script标签src源可以跨域的用法,来得到跨域名的请求信息。这便是jsonp的解决办法。

jsonp的方法有其不美的地方,主要是两点:

(1)jsonp只能解决GET类的请求,其它类型的请求,script标签无法做到

(2)使用jsonp的方式,对应的后台程序必须对结果进行改造。将返回值做一个函数式包装。这对业务开发有较大侵入性,增加开发人员负担

java开发工具下载地址及安装教程大全,在这里。更多深度技术好文,在这里

2、CORS方案

W3C改进了跨域方案,即同一个公司或者合作公司允许对方访问自己的域名,则可放开跨域限制,即CORS方案。

nginx配置跨域操作:对于比较简单的http请求(GET、POST、HEAD类型),无须浏览器来问,nginx服务器直接在响应头部,加入同意跨域的信号即可,在被访问方的nginx中配置如下:

#是否允许请求带有验证信息
        add_header Access-Control-Allow-Credentials true;
        #允许跨域访问的域名,可以是一个域的列表,也可以是通配符*
        add_header Access-Control-Allow-Origin  http://www.studyshare.vip;
        #允许脚本访问的返回头
        add_header Access-Control-Allow-Headers 'x-requested-with,content-type,Cache-Control,Pragma,Date,x-timestamp';
        #允许使用的请求方法,以逗号隔开
        add_header Access-Control-Allow-Methods 'POST,GET,OPTIONS,PUT,DELETE';
        #允许自定义的头部,以逗号隔开,大小写不敏感
        add_header Access-Control-Expose-Headers 'WWW-Authenticate,Server-Authorization';
        #P3P支持跨域cookie操作
        add_header P3P 'policyref="/w3c/p3p.xml", CP="NOI DSP PSAa OUR BUS IND ONL UNI COM NAV INT LOC"';

对于复杂的http请求(PUT、DELETE、含json格式数据),浏览器会在发请求前,先发一道OPTION请求来询问。在Nginx上直接配置对此询问的回答即可,如下:

if ($request_method = 'OPTIONS') {##OPTIONS类的请求,是跨域先验请求
            return 204;##204代表ok
        }

二、防盗链

网站的图片、视频等资源如果不想被其他网站引用,可加入防盗链功能,加入后则只能自己域名访问,其他域名一概不能访问,配置如下

location /upload/ {
               valid_referers www.studyshare.cn;
               if ($invalid_referer) {
                       return 404;
               }
       }
以上配置表示只允许www.studyshare.cn访问自己网站的图片,其他域名则无法引用该网站的图片。同时可以减少自己网站的流量消耗。

三、压缩配置

对网站的静态资源文件进行压缩后传输,可以节约带宽资源。配置如下:

location ~ /(.*)\.(html|js|css|png)$ {
                gzip on; # 启用gzip压缩,默认是off,不启用

# 对js、css、jpg、png、gif格式的文件启用gzip压缩功能
                gzip_types application/javascript text/css image/jpeg image/png image/gif;
                gzip_min_length 1024; # 所压缩文件的最小值,小于这个的不会压缩
                gzip_buffers 4 1k; # 设置压缩响应的缓冲块的大小和个数,默认是内存一个页的大小
                gzip_comp_level 1; # 压缩水平,默认1。取值范围1-9,取值越大压缩比率越大,但越耗cpu时间

#root /etc/nginx/html/gzip;
        }
原创文章,转载请注明出处。

java开发工具下载地址及安装教程大全,在这里。更多深度技术好文,在这里

nginx跨域、防盗链、压缩等小功能详解的更多相关文章

  1. 微软Azure区块链开发工具包三大功能详解

    2018年11月15日,微软宣布了Azure区块链开发工具包,它基于微软的无服务器技术构建,并且利用微软和第三方SaaS,完美集成了区块链.该工具包扩展了微软的区块链开发模板和Azure Blockc ...

  2. Unity3D-常用小功能详解,例子(得分变动效果、倒计时)

    Unity3D-Demo多个功能方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Score Ind ...

  3. 16.Nginx优化与防盗链

    Nginx优化与防盗链 目录 Nginx优化与防盗链 隐藏版本号 修改用户与组 缓存时间 日志切割 小知识 连接超时 更改进程数 配置网页压缩 配置防盗链 配置防盗链 隐藏版本号 可以使用 Fiddl ...

  4. Nginx跨域及Https配置

    一.跨域 1. 什么是跨域? 跨域:指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制(指一个域下的文档或脚本试图去请求另一个域下的资源,这 ...

  5. 跨域原因及SpringBoot、Nginx跨域配置

    目录 概述 简单请求 跨域解决方案 概述 SpringBoot跨域配置 Nginx跨域配置 概述 MDN文档 Cross-Origin Resource Sharing (CORS) 跨域的英文是Cr ...

  6. nginx secure_link下载防盗链

    下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...

  7. nginx跨域设置

    nginx跨域问题例子:访问http://10.0.0.10/ 需要能实现跨域 操作:http://10.0.0.10/项目是部署在tomcat里面,tomcat跨域暂时还不会,按照网上的方法操作也没 ...

  8. nginx跨域的简单应用

    nginx跨域的简单应用 要求:1.浏览器访问print.qianbaihe.wang/zt 直接调转至 www.flybirdprint.com/zt,浏览器显示域名不变. server { lis ...

  9. nginx如何设置防盗链

    关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通 ...

随机推荐

  1. Leetcode周赛164

    目录 访问所有点的最小时间 思路 代码 统计参与通信的服务器 思路 代码 搜索推荐系统 思路 代码 停在原地的方案数 思路 代码 访问所有点的最小时间 思路 由于每次移动有水平方向移动一格.竖直方向移 ...

  2. 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...

  3. USB设备驱动程序1

    目的:USB鼠标用作按键,左键相当于字母L,右键相当于字母S,中键相当于Enter.如何来实现?用到输入子系统:1)分配input_dev2)设置3)注册4)硬件相关操作对于USB鼠标来说,硬件操作应 ...

  4. Spring Boot 各版本的Java版本要求

    Spring Boot 各版本的Java版本要求 Spring Boot 与 Java 对应版本,以下表格由官方网站总结. 官网:https://spring.io/projects/spring-b ...

  5. Active Ball

    Active Ball is a simple game. All you need to do is aim at the food and shoot it, then collect the m ...

  6. Codeforces886(Technocup2018) F Symmetric Projections

    Codeforces886(Technocup2018) F Symmetric Projections You are given a set of n points on the plane. A ...

  7. adb--环境安装

    前戏 我们在做Android自动化的时候,adb命令是必不可少的,比如我们要获取一个包名,使用adb往手机上安装软件,获取activity等等,都要用到adb命令.而模拟器在我们没有手机测试的时候,可 ...

  8. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    前言一.nginx简介1. 什么是 nginx 和可以做什么事情Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50 ...

  9. win10 将任意文件固定到开始屏幕(最佳办法)

      1.情景展示 以.bat文件文件为例,想将其固定到开始屏幕上,但是选中-->右键,却没有固定到开始屏幕选项,如何将其固定到开始屏幕上呢? 2.解决方案 选中你要固定到开始屏幕上的文件--&g ...

  10. linux 系统时间 EST CST

    早上本来要做一些实验的,基于时间的.date 查看时间,发现时间不对.用 pool.ntp.org 去同步发现时间还是一样的,并且没有报错.如是开启另外一台时间对的linux服务器进行对比.发现一个是 ...