Apache和Nginx虚拟机的配置方法+跨域知识点整理

2023-11-18

Apache的配置

ip

创建虚拟主机目录

新建测试页面

修改主配置文件

[root@hya ~]# vim /etc/httpd/conf/httpd.conf    #在主配置文件的最下面添加
<VirtualHost 192.168.122.1:80>       基于ip的虚拟主机地址
        DocumentRoot /var/www/web1
        ServerName www.index.com         虚拟主机
</VirtualHost>

重启Apache

得到结果

端口号

在/etc/httpd/conf/httpd.conf中添加

然后重启httpd

得到结果

基于域名

在/etc/httpd/conf/httpd.conf中添加

在再/etc/hosts中添加192.168.122.1 www.index.com

然后得到结果

Nginx的虚拟主机配置

基于端口

创建虚拟主机的目录

重定向值给index.html

修改Nginx的配置文件

然后重启Nginx,之后输入得到结果

基于ip

添加网卡

然后修改

vim /etc/nginx/conf.d/server.conf 

server{
        listen 80;
        server_name 192.168.150.129;
        location /{
                root usr/share/nginx/html/web2/index.html;
                index index.html index.htm;
                }
}

关闭防火墙

systemctl stop firewalld.service 
基于域名

主机与vm能互相ping通(因为我的虚拟机被我弄崩了所以无法测试)

vim /etc/nginx/conf.d/server.conf 

server{
        listen 80;
        server_name 192.168.150.129;
        location /{
                root /var/www/nginx/server;
                index index.html index.htm;
                }
}

测试时关闭防火墙

跨域的四种方法

  1. 什么是跨域

1.“源”由协议、域名、端口号组成

2.同源策略是浏览器的一种保护机制。同源顾名思义,指两个源相同(即,两个源的协议、域名、端口号都相同)

  1. 违反了同源策略的请求就是通常说的跨域请求

    • JSONP

Jsonp是Json的一种“使用模式”,他就可以解决浏览器遇到的跨域问题,我们可以动态创建script,再请求一个带参网址实现跨域通信。用Jsonp请求得到的是JavaScript,相当于直接用JavaScript解析。

JSONP方案和ajax没有任何关系,是通过script标签的src属性实现,因此JSONP方案只支持get请求,并且兼容性好,几乎所有浏览器都支持。

实现原理:在全局定义一个函数,将函数名以get传参的方式写入到script标签的src属性中(如下图所示),后端返回函数名以及参数,全局定义的函数就会自动调用,形参会接收后端传过来的参数。

2.CORS

CORS(Cross-Origin Resource Sharing,跨域资源共享)方案,就是通过服务器设置一系列响应头来实现跨域。而客户端不需要做什么额外的事情。

3.postMessage跨域

window.postMessage() 方法允许来自一个文档的脚本可以传递文本消息到另一个文档里的脚本,而不用管是否跨域。一个文档里的脚本还是不能调用在其他文档里方法和读取属性,但他们可以用这种消息传递技术来实现安全的通信。

这项技术称为“跨文档消息传递”,又称为“窗口间消息传递”或者“跨域消息传递”。

postMessage() 方法,该方法允许有限的通信 —— 通过异步消息传递的方式 —— 在来自不同源的脚本之间。

postMessage 可用于解决以下方面的问题:

页面和其打开的新窗口的数据传递

页面与嵌套的 iframe 消息传递

多窗口之间消息传递

server1.js

let express = require('express'),
    app = express();
app.listen(1001, _ => {
    console.log('OK!');
});
app.use(express.static('./'));

server.js

let express = require('express'),
    app = express();
app.listen(1002, _ => {
    console.log('OK!');
});
app.use(express.static('./'));
  1. html

<body>
    <iframe id="iframe" src="http://127.0.0.1:1002/MESSAGE/1.html" frameborder="0" style="display: none;"></iframe>
    <script>
        // 第一个参数是发送的信息,第二个参数是指定源
        iframe.onload=function(){
            iframe.contentWindow.postMessage('珠峰培训', 'http://127.0.0.1:1002/');
        }

        // => 监听B传递的信息
        window.onmessage = function (ev) {
            console.log(ev.data);
        }
    </script>
</body>
  1. html

<body>
    <script>
        window.onmessage = function (ev) {
            // 接受1发送来的信息
            console.log(ev.data);
            // 给1发送信息
            ev.source.postMessage(ev.data + '@@@', ev.origin);
        }
    </script>
</body>
    • web sockets

WebSocket 是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀,他是HTML5 的一个持久化的协议,它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。 只有在支持web socket协议的服务器上才能正常工作。

非简单请求

常见的情况有 Content-Type 为 application/json 的请求。浏览器在发出非简单请求前,会发送一次 options 请求。用于先询问服务器,当前域名是否被允许访问,以及可以使用哪些 methods 和 headers。

预检请求

非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUTDELETE,或者Content-Type字段的类型是application/json

非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。

options 请求的请求头会带上三个头

Origin 当前请求域名

Access-Control-Request-Method 必须,用来列出正式请求的 method,例如 POST

Access-Control-Request-Headers 多个值用逗号隔开,例如 Content-Type

options 响应的响应头

Access-Control-Allow-Origin 必须,和简单请求一样

Access-Control-Allow-Credentials 可选,和简单请求一样

Access-Control-Max-Age 该字段可选,用来指定本次预检请求的有效期,单位为秒。上面结果中,有效期是20天(1728000秒),即允许缓存该条回应1728000秒(即20天),在此期间,不用发出另一条预检请求。

Access-Control-Allow-Methods 必须,多个 method 用逗号隔开,表明服务器支持的所有跨域请求的方法。注意,返回的是所有支持的方法,而不单是浏览器请求的方法。这是为了避免多次预检请求。

Access-Control-Allow-Headers 如果浏览器请求头里包括 Access-Control-Request-Headers 字段,则 Access-Control-Allow-Headers 字段是必需的。多个值用逗号隔开,表明服务器支持的所有头信息字段,不限于浏览器在预检中请求的字段

然后返回 http 状态码 204

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache和Nginx虚拟机的配置方法+跨域知识点整理 的相关文章

  • Kubernetes Ingress 在 nginx 反向代理后面运行

    我已经在可以从互联网访问的服务器上安装了 minikube 我创建了一个可用的 kubernetes 服务 gt kubectl get service myservice NAME CLUSTER IP EXTERNAL IP PORT
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • 在读取正文之前拒绝 HTTP 请求

    我正在开发一个网站 用户需要上传一些非常大的文件 该网站是用 PHP 编写的 在某些情况下 我想根据标头拒绝文件 理想情况下 我想在收到标头后立即拒绝请求 而不读取正文 如果标头足以表明该文件应被拒绝 则没有理由读取 200M 的文件 此外
  • 如何修复 Nginx 自动 301 重定向到带有尾部斜杠的相同 URL?

    当我尝试将 Web 应用程序的子目录中的索引文件访问到相同的 URL 但附加了斜杠 时 Nginx 出现了不良行为 它正在重新路由请求 我有一个简单的 Web 应用程序 其中设置了一个根目录和其中的许多子目录 每个子目录中都有一个 inde
  • proc_open() 失败并显示“权限被拒绝”

    我正在尝试使用proc open 执行程序并打印结果 但是 我不断收到 许可被拒绝 的消息 已将脚本和可执行文件的 chmod 设置为 0777 但无济于事 ini get safe mode 是假的 可能出什么问题了 我正在使用 Cent
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • Capistrano 和 XSendFile 配置

    我正在尝试使用 Apache 2 2 Passenger 4 0 59 和 XSendFile 0 12 配置 Rails 生产服务器 应用程序通过 Capistrano 部署 部署的应用程序生成 可能很大 PDF Rails root t
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • 如何使用`RewriteRule ^(.*)$ ?id=$1 [L,QSA]`通过.htaccess获取文件目录?

    如何使用 htaccess 获取文件目录RewriteRule id 1 L QSA 如果 htaccess 位于http localhost some dir htaccess我正在打开http localhost some dir he
  • Magento 中的子域 htaccess 问题

    public html www domain com public html subdomain subdomain domain com public html htaccess public html subdomain htacces
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • phpinfo 说 php.ini 路径是 C:\Windows 但那里没有 php.ini

    我们正在尝试从 PHP5 切换到 PHP7 现在我们已经安装了 Apache 并且 PHP 可以运行了 然而 我们在php ini文件没有任何作用 Via phpinfo 我们意识到原因是Configuration File php ini
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 通过 AJP 将 REMOTE_USER 转发到 tomcat(例如用于 shibboleth)

    今天我刚刚遇到了以下问题 1 我将apache配置为基本身份验证 需要有效用户 这有效 2 我进一步配置 apache 将某些路径 在我的例子中为 idp 的请求转发到 tomcat servlet shibboleth IDP 结果是 s
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 使用查询参数值进行 NGINX 301 重定向

    我想重定向example com lang en to example com en 我正在使用 Python Django 我的服务器运行 Plesk Nginx 我尝试像这样在我的网页上重定向 但这是行不通的 rewrite lang
  • Win 8.1 上的 XAMPP 安装带有 UAC 警告

    我正在尝试在 Windows 8 1 上安装 Xampp win32 1 8 2 我收到一条消息说 由于系统上激活的用户帐户用户帐户 XAMPP 的某些功能可能会受到限制 我尝试更改用户帐户控制设置 但警告仍然存在 并且APACHE无法启动

随机推荐

  • 关于IBM MQ6.0与MQ8.0的通信问题

    国庆之后 负责的一个项目突然出现了问题 描述问题 在网络 业务 业务量都没有增长的情况下 MQ8的批量发送通道突然就挂掉了 变成retrying状态了 消息全都堵在传输队列里了 死信队列无消息 实时通道正常 排除网络原因导致的通道问题 采取
  • Cannot declare class app\home\controller\Cases because the name is already in use

    Cannot declare class app home controller Cases because the name is already in use 命名空间冲突了 use 模型类的时候使用as别名 同一个页面上 命名空间不同
  • MyBatis-Plus主键生成策略

    主键生成策略 MyBatis Plus默认实现5种主键生成策略 分别是 AUTO 配合数据库设置自增主键 可以实现主键的自动增长 类型为nmber INPUT 由用户输入 NONE 不设置 等同于INPUT ASSIGN ID 只有当用户未
  • 常见git报错问题

    1 windows使用git时出现 warning LF will be replaced by CRLF windows中的换行符为 CRLF 而在linux下的换行符为LF 所以在执行add 时出现提示 解决办法 rm rf git 删
  • FreeRTOS实时操作系统(三)任务挂起与恢复

    系列文章 FreeRTOS实时操作系统 一 RTOS的基本概念 FreeRTOS实时操作系统 二 任务创建与任务删除 HAL库 FreeRTOS实时操作系统 三 任务挂起与恢复 FreeRTOS实时操作系统 四 中断任务管理 FreeRTO
  • 将springboot的项目打包成jar部署

    一 在项目的配置文件pom xml下导入
  • 数学建模十大算法01-蒙特卡洛算法(Monte Carlo)

    文章目录 一 生成随机数 1 1 rand 1 2 unifrnd 1 3 联系与区别 二 引入 2 1 引例 2 2 基本思想 2 3 优缺点 三 实例 3 1 蒙特卡洛求解积分 3 2 简单的实例 3 3 书店买书 0 1规划问题 3
  • Java IO流 缓冲流-BufferedInputStream、BufferedOutputStream

    首先抛出一个问题 有了InputStream为什么还要有BufferedInputStream BufferedInputStream和BufferedOutputStream这两个类分别是FilterInputStream和FilterO
  • 将Python脚本编译为so文件的方法,并实现调用

    本文以Linux系统 Ubuntu 为例 讲解如何将自己的Python程序 py文件 加密为 so文件 1 安装必要的工具 首先 我们需要在Ubuntu系统中安装一些准备工具 包括python3 dev gcc Cython 其中Cytho
  • lua环境搭建数据类型

    lua作为一门计算机语言 从语法角度个人感觉还是挺简洁的接下来我们从0开始学习lua语言 1 首先我们需要下载lua开发工具包 在这里我们使用的工具是luadist 下载链接为 https luadist org repository 下载
  • 2023年每天都投递很多份简历,但都石沉大海,我还投吗?测试人该何去何从?

    各大互联网公司的接连裁员 政策限制的行业接连消失 让今年的求职雪上加霜 想躺平却没有资本 还有人说软件测试岗位饱和了 对此很多求职者深信不疑 因为投出去的简历回复的越来越少了 另一面企业招人真的变得容易了吗 有企业HR吐槽 简历确实比以前多
  • 销售、售前、项目实施不同的培训要求

    产品部门对于不同的岗位 培训要有不同的针对性 不能搞一刀切 针对销售部门 培训的要求和考核的要求 知其然 即知道产品的功能 性能 优势 针对售前部门 培训的要求和考核的要求 知其然 知起所以然 即要知道产品的 然 更要知道 然 从何来 优势
  • Linux操作系统的题目联系及解析

    一 创建文件命令练习 1 在 目录下创建一个临时目录test 这个比较基础 就是考创建 利用mkdir就能完成 如 2 在临时目录test下创建五个文件 文件名分别为passwd group bashrc profile sshd conf
  • 如何判断网页是否使用了Ajax

    方法一 一次AJAX请求头如下 一次普通get请求如下 方法2 使用JS插件查看是不是异步加载 方法3
  • 操作系统中的作业、程序、进程

    作业 作业是用户向计算机提交任务的任务实体 是要求计算机系统所做工作的集合 在用户向计算机提交作业后 系统将它放入外存中的作业等待队列中等待执行 它包括程序 数据及其作业说明书 程序 程序是为解决一个信息处理任务而预先编制的工作执行方案 是
  • 最热门的大数据技术

    大数据已经融入到各行各业 哪些大数据技术是最受欢迎 哪些大数据技术潜力巨大 对10个最热门的大数据技术的介绍 一 预测分析 预测分析是一种统计或数据挖掘解决方案 包含可在结构化和非结构化数据中使用以确定未来结果的算法和技术 可为预测 优化
  • LeetCode 2391. 收集垃圾的最少总时间

    给你一个下标从 0 开始的字符串数组 garbage 其中 garbage i 表示第 i 个房子的垃圾集合 garbage i 只包含字符 M P 和 G 但可能包含多个相同字符 每个字符分别表示一单位的金属 纸和玻璃 垃圾车收拾 一 单
  • Qt离线安装MSVC方法

    安装好Qt后 有时候需要用到MSVC编译环境 如果电脑连接了互联网 直接下载安装器在线安装即可 那么需要为没有联网的电脑安装MSVC时 就需要采用下载离线安装包 离线安装的方法 MSVC安装器下载地址 MSVC2019 https visu
  • MTCNN代码解读

    首先了解MTCNN算法 理论基础 正如上图所示 该MTCNN由3个网络结构组成 P Net R Net O Net Proposal Network P Net 该网络结构主要获得了人脸区域的候选窗口和边界框的回归向量 并用该边界框做回归
  • Apache和Nginx虚拟机的配置方法+跨域知识点整理

    Apache的配置 ip 创建虚拟主机目录 新建测试页面 修改主配置文件 root hya vim etc httpd conf httpd conf 在主配置文件的最下面添加