Expose

HTTP访问控制(CORS)踩坑小记

﹥>﹥吖頭↗ 提交于 2021-02-20 11:53:02
前几天在帮后端排查一个cors的问题的时候发现的一些小坑特此记录 ** cors的本质是出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。 跨域并非一定是浏览器限制了跨站请求,也有可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。最好的例子是 CSRF 跨站攻击原理,请求是发送到了后端服务器无论是否跨域!注意:有些浏览器不允许从 HTTPS 的域跨域访问 HTTP,比如 Chrome 和 Firefox,这些浏览器在请求还未发出的时候就会拦截请求。 ** 本case场景描述如下: 用户在a.com域名下跨域访问b.com域名下的api接口,使用了XMLHttpRequest的跨域头请求。域名b.com也允许了可以跨域 Access-Control-Allow-Origin 但是很奇怪在访问b.com的接口时有些api能访问成功,有些api访问失败。排查发现访问失败的api都是需要用户的登录态的。但是用户已经在b.com登录过了。把XMLHttpRequest请求换成jsonp请求则都可以请求成功(这好像是废话)。。。由此推测XMLHttpRequest 添加cors头的时候没有把b.com的

Nginx开启跨域访问

谁都会走 提交于 2021-02-18 03:30:00
CORS on Nginx The following Nginx configuration enables CORS, with support for preflight requests. # # Wide-open CORS config for nginx # location / { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; # # Custom headers and headers various browsers *should* be OK with but aren't # add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; # # Tell client that this pre-flight info is valid for 20 days # add_header 'Access-Control-Max

Docker 构建镜像

丶灬走出姿态 提交于 2021-02-15 09:42:17
Docker 构建镜像 1、首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容。 下面三行代码表示: 1、这三个路径要排除,不要打包进入 image 文件。 2、如果你没有路径要排除,这个文件可以不新建。 .git node_modules npm -debug.log 2、然后在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的内容。 下面五行代码表示: 1、FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。 2、COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。 3、WORKDIR /app:指定接下来的工作路径为/app。 4、RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。 5、EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。 FROM node:8.4 COPY . / app WORKDIR / app RUN npm install --registry=https:// registry.npm.taobao.org

dockerfile构建镜像

强颜欢笑 提交于 2021-02-14 16:12:40
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。 一、Dockerfile 语法 使用以下的语法可以实现各种各样的镜像 FROM:指定父镜像,可以通过添加多个FROM,在同一个Dockerfile中创建多个镜像 MAINTAINER:维护者信息,可选 RUN:用来修改镜像的命令,可以用来安装程序,当一条RUN完成后,会在当前的镜像上创建一个新的镜像层,接下来的指令会在新的镜像层上执行。有2种形式。 RUN [“apt-get”, “update”],调用exec RUN apt-get update,调用的/bin/sh EXPOSE:用来指明容器内进程对外开放的端口。在docker run的时候可以加-p(可以将EXPOSE中没列出的端口设置为对外开放)和-P(EXPOSE里所指定的端口映射到主机上另外的随机端口???)来设置端口。 ADD:向新容器中添加文件,文件可以是 主机文件:必须是相对Dockerfile所在目录的相对路径(如果是压缩文件,docker会解压缩) 网络文件:URL文件,在创建容器时会下载下来添加到镜像中。(如果是压缩文件,docker不会解压缩)

docker 打包springboot镜像并启动

一世执手 提交于 2021-02-11 21:36:24
1.使用maven将项目打成一个包含所有的jar包 2.pom.xml中包含即可通过mvn clean package 就可以打成可执行jar包 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <mainClass>com.org.Application</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal

DockerFile服务

痴心易碎 提交于 2021-02-07 00:22:53
Dockerfile分为四部分:基础镜像信息、镜像创建者信息、镜像操作指令、容器启动执行指令。 一、Dockerfile的书写规则及指令使用方法 Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。 Dockerfile的指令根据作用可以分为两种:构建指令和设置指令。 构建指令用于构建image,其指定的操作不会在运行image的容器上执行; 设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。 1、FROM(指定基础image) 该指令有两种格式: FROM <image> 指定基础image为该image的最后修改的版本。 或者: FROM <image>:<tag> 指定基础image为该image的一个tag版本。 RUN后面接要执行的命令,比如,我们想在镜像中安装vim,只需在Dockfile中写入 RUN yum install -y vim 2、MAINTAINER(用来指定镜像创建者信息) 构建指令,用于将image的制作者相关的信息写入到image中。当我们对该image执行docker inspect命令时,输出中有相应的字段记录该信息。 格式: MAINTAINER <name> 3、RUN(安装软件用) 构建指令,RUN可以运行任何被基础image支持的命令

批量生成二维码并压缩zip

我是研究僧i 提交于 2021-01-19 14:15:38
<!-- 二维码生成依赖 --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.4.0</version> </dependency> @GetMapping("/download") public void download(HttpServletResponse response, Long qrCodeId) throws IOException { byte[] data = uwpQrCodeService.download(qrCodeId); genCode(response,data); } /** * 生成zip文件 */ private void genCode(HttpServletResponse response, byte[] data) throws IOException { response.reset(); response.addHeader("Access-Control

Docker 极简入门指南,10 分钟就能看懂

别等时光非礼了梦想. 提交于 2021-01-17 14:54:28
富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。本节我们就来探索一下 Docker 的神秘世界,从零到一掌握 Docker 的基本原理与实践操作。别再守着前端那一亩三分地,是时候该开疆扩土了。我们将会围绕下面几点展开: 讲个故事 虚拟机与容器 认识 Docker 核心概念 安装 Docker 快速开始 常规操作 最佳实践 一、讲个故事 为了更好的理解 Docker 是什么,我们先来讲个故事:我需要盖一个房子,于是我搬石头、砍木头、画图纸、盖房子。一顿操作,终于把这个房子盖好了。 结果,住了一段时间,心血来潮想搬到海边去。这时候按以往的办法,我只能去海边,再次搬石头、砍木头、画图纸、盖房子。 烦恼之际,跑来一个魔法师教会我一种魔法。这种魔法可以把我盖好的房子复制一份,做成「镜像」,放在我的背包里。 等我到了海边,就用这个「镜像」,复制一套房子,拎包入住。是不是很神奇?对应到我们的项目中来,房子就是项目本身,镜像就是项目的复制,背包就是镜像仓库。如果要动态扩容,从仓库中取出项目镜像,随便复制就可以了。Build once,Run anywhere! 不用再关注版本、兼容、部署等问题,彻底解决了「上线即崩,无休止构建」的尴尬。 二、虚拟机与容器 开始之前,我们来做一些基础知识的储备: 1.虚拟机

Nginx 配置文件修改跨域:

杀马特。学长 韩版系。学妹 提交于 2020-12-28 01:36:44
Nginx 配置文件修改跨域: 复制代码 location /record { add_header Cache-Control no-cache; add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; add_header 'Access-Control-Allow-Headers' 'Range'; types{ application/dash+xml mpd; application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /home/tinywan/video_recordings; } 来源: oschina 链接: https://my.oschina.net/qinghuo111/blog/4857488

docker生成dotnet core镜像

早过忘川 提交于 2020-12-17 07:28:55
使用docker生成dotnet core项目镜像。需要编写Dockerfile文件。编写方法有两种,如下: 第一种:将发布成功的项目,直接生成镜像。 FROM microsoft/dotnet:2.2 -aspnetcore-runtime WORKDIR /app EXPOSE 5000 COPY bin/Debug/netcoreapp2.2 /publish/ app/ ENV ASPNETCORE_URLS http://*:5000 ENTRYPOINT ["dotnet", "app/WebApplication1.dll"] 第二种:发布源码,自动build,publish FROM microsoft/dotnet:2.2 -aspnetcore-runtime AS base WORKDIR /app EXPOSE 5000 FROM microsoft/dotnet:2.2 -sdk AS build WORKDIR /src COPY . . RUN dotnet restore "WebApplication1.csproj" --configfile NuGet.Config WORKDIR "/src/" RUN dotnet build "WebApplication1.csproj" -c Release -o /app FROM build AS