原文链接: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. linux 下首次使用github 和其中遇到的问题

    1首先安装git sudo apt-get install git 2配置git文件 git config --global user.name "你的用户名" git confi ...

  2. 搭建自己的docker镜像

    手动构建 1.关键字查找镜像 sudo docker search centos 2.下载基本镜像 sudo docker pull centos 3.启动容器 sudo docker run -d ...

  3. 20180610模拟赛T4——木棍

    有\(N\)根木棍,每根的长度\(L\)和重量\(W\)已知.这些木棍将被一台机器一根一根地加工.机器需要一些启动时间来做准备工作,启动时间与木棍被加工的具体情况有关.启动时间遵循以下规则: 加工第一 ...

  4. swagger 配置- ssm

    swagger 配置 - ssm swagger 是一个用来看接口的工具,具体效果如下,这里用的是swagger2 1.porm.xml <dependency> <groupId& ...

  5. nodemcu固件的烧录及lua开发

    一.板子介绍 NodeMCU 1.0/ESP 8266 12E 该模块是安信可公司生产的,并且提供全部开发资料. 对该模块的开发有两种方式: 一种是基于乐鑫官方推出的SDK开发包在 安信可ESP的一体 ...

  6. BZOJ 5161: 最长上升子序列 状压dp+查分

    好神啊 ~ 打表程序: #include <cstdio> #include <cstring> #include <algorithm> #define N 14 ...

  7. ESA2GJK1DH1K升级篇: STM32远程乒乓升级,升级流程源码详细说明

    前言 1.BootLoader程序,升级简要流程图 2.其实主要的就是把程序文件写入环形队列,然后环形队列取出来数据写入Flash 3.用户程序,简要流程图 下面的读一下,有个印象就可以: 说白了就是 ...

  8. P2508 [HAOI2008]圆上的整点

    题目描述 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. 输入输出格式 输入格式: r 输出格式: 整点个数 输入输出样例 输入样例#1: 复制 4 输出样例#1: 复制 ...

  9. Salesforce 开发整理(三)权限共享

    Salesforce提供对象的访问权限可以通过 安全性控制 → 共享设置,可以查看每个对象在系统内部默认的访问权限 共用读写:对象的记录任何用户都可以进行读写操作 公用只读:对象的记录任何用户都可以查 ...

  10. 不了解这12个语法糖,别说你会Java!

    阅读本文大概需要 10 分钟. 作者:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语 ...