如何在 Mac 上配置一个本地 Web 服务器

通常情况下,你可以通过在浏览器中直接打开或者通过一个 URL 来访问一个文件。

使用浏览器访问本地文件时,一般地址是 file:// 开头的本地文件地址。
而访问远程文件时,一般地址是 http:// 或者 https:// 开头的地址,表示这个文件通过 http 协议访问的。

2. 直接访问本地文件时存在的问题

在有些情况下,你打开一个本地的 html 文件时,会出现运行错误。

导致这些错误的原因主要有以下两个:
(1) 其中包含了异步请求。 如果你直接打开本地文件运行,一些浏览器(包括 Chrome)将不会运行其中的异步请求(请参阅 从服务器获取数据)。 这是因为安全限制而导致的(更多关于 Web 安全的信息,请参阅Website security)。

比如,你直接在浏览器中打开含有如下内容的文件:

<html>
<head>
    <script>
	    var request = new XMLHttpRequest(); 

		request.onreadystatechange = function () { 
		    console.log(request);
		}

		// 发送请求:
		request.open('GET', './data.json');
		request.send();
    </script>
    <title>HTML 测试页面</title>
</head>

<body>
    <p>测试页面</p>
</body>

</html>

然后,你会在 console 中看到这样的错误:

index.html:12 Failed to load file:///Users/ShannonChen/Desktop/Playground/nodejs_example/data.json: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

(2) 执行文件中的代码时需要通过执行一些附加逻辑(如 PHP 或 Python)才能获得结果,而不仅仅是直接访问一个文件。

比如,我登录了京东网站后,查看购物车页面时,需要服务器返回的是包含我的购物车数据的页面,这个时候,就需要服务端在接收到请求后,跟我的用户信息(一般是 cookie)来返回匹配的数据。

方法一、启动 Mac 自带的 Apache 服务器

  1. 运行 Apache $ sudo apachectl start
  2. 退出 Apache $ sudo apachectl stop
  3. 把工程文件夹放到以下位置中 /Library/WebServer/Documents
  4. 在浏览器中访问:在地址栏中输入地址 http://localhost/工程文件夹名称/,回车。

注意: 不再需要使用后一定要记得退出,否则会消耗电脑性能。

Q:如何修改 Apache 的默认端口?
A:首先,找到 Apache 的配置文件,位于 /etc/apache2 下的 httpd.conf
然后,找到 Listen 80 那一行,修改成你想要的端口即可。

方法二:借助 Mac 系统自带的 Python,使用其中的 SimpleHTTPServer 模块启动服务器

  1. 安装 Python,其实 Mac 系统就自带了 Python2.7。
  2. 通过 cd <your-working-dir> 进入到你的工作目录下,也就是你要让别人访问的文件所在的目录。
  3. 在工作目录下执行下面的命令后,就可以启动服务了:

    # 如果你的 Python 版本是 3.X
    python3 -m http.server
    
    # 如果你的 Python 版本是 2.X
    python -m SimpleHTTPServer
    
  4. 默认情况下,上面的操作将会在本地 Web 服务器上的端口 8000 上运行工作目录中的内容。您可以通过在浏览器中输入 URL http://localhost:8000 并回车,来访问此服务器。你会看到列出的目录的内容,点击就可以查看你想运行的 HTML 文件。

Q:如何修改服务器的默认端口?
A:可以通过运行下面的命令来指定一个端口号:

# 如果你的 Python 版本是 3.X
python -m http.server <your-port> 

# 如果你的 Python 版本是 2.X
python -m SimpleHTTPServer <your-port>

结论

方法二相比方法一来说,更简单、方便,也更灵活,而且还可以随时在终端上看到服务器的状态。

参考

  • How do you set up a local testing server? - Learn web development | MDN(推荐阅读)
  • Mac OS X 启用 Web 服务器
  • Mac自带的本地服务器的使用
  • Mac OS原来自带了apache,基本用法总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序使用echarts实现条形统计图功能

微信小程序使用echarts组件实现条形统计图功能 使用echarts实现在微信小程序中统计图的功能&#xff0c;其实很简单&#xff0c;只需要简单的两步就可以实现啦&#xff0c;具体思路如下&#xff1a; 引入echarts组件调用相应的函数方法 由于需要引入echarts组件&#xff0c;代…

.net报错异常及常用功能处理总结(持续更新)

.net报错异常及常用功能处理总结---持续更新 1. WebApi dynamic传参解析结果中ValueKind Object处理方法问题描述方案1&#xff1a;(推荐&#xff0c;改动很小)方案2&#xff1a; 2.C# .net多层循环嵌套结构数据对象如何写对象动态属性赋值问题描述JavaScript动态属性赋值.net…

WebSocket通信协议

WebSocket是一种网络通信协议.RFC6455定义了它的通信标准 WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双向通信的协议 HTTP协议是一种无状态的,无连接的,单向的应用层协议.它采用了请求,响应的模式.通信请求只能由客户端发起,服务端对请求做出应答处理. 这种模型有…

PO框架【自动化测试】

对象&#xff1a;Tpshop商城 需求&#xff1a;更换头像 操作步骤&#xff1a; 个人信息–头像–上传图片–图片确认–确认保存 核心代码&#xff1a; # 进入frame框架[不熟] driver.switch_to.frame(driver.find_element_by_xpath(//*[id"layui-layer-iframe1"]))…

物联网实战--平台篇之(一)架构设计

本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、平台简介 物联网平台这个概念比较宽&#xff0c;大致可以分为两大类&#x…

为什么要学音视频?

一直都在说“科技改变生活”&#xff0c;现实告诉我们这是真的。 随着通信技术和 5G 技术的不断发展和普及&#xff0c;不仅拉近了人与人之间的距离&#xff0c;还拉近了人与物&#xff0c;物与物之间的距离&#xff0c;万物互联也变得触手可及。 基于此背景下&#xff0c;音…

C++面经(简洁版)

1. 谈谈C和C的认识 C在C的基础上添加类&#xff0c;C是一种结构化语言&#xff0c;它的重点在于数据结构和算法。C语言的设计首要考虑的是如何通过一个过程&#xff0c;对输入进行运算处理得到输出&#xff0c;而对C&#xff0c;首先要考虑的是如何构造一个对象&#xff0c;通…

Node.js -- 包管理工具

文章目录 1. 概念介绍2. npm2.1 npm 下载2.2 npm 初始化包2.3 npm 包(1) npm 搜索包(2) npm 下载安装包(3) require 导入npm 包的基本流程 2.4 开发依赖和生产依赖2.5 npm 全局安装(1) 修改windows 执行策略(2) 环境变量Path 2.6 安装包依赖2.7 安装指定版本的包2.8 删除依赖2.…

jenkins教程

jenkins 一、简介二、下载安装三、配置jdk、maven和SSH四、部署微服务 一、简介 Jenkins是一个流行的开源自动化服务器&#xff0c;用于自动化软件开发过程中的构建、测试和部署任务。它提供了一个可扩展的插件生态系统&#xff0c;支持各种编程语言和工具。 Jenkins是一款开…

PotatoPie 4.0 实验教程(27) —— FPGA实现摄像头图像拉普拉斯边缘提取

拉普拉斯边缘提取有什么作用&#xff1f; 拉普拉斯边缘检测是一种常用的图像处理技术&#xff0c;用于检测图像中的边缘和边界。它的主要作用包括&#xff1a; 边缘检测&#xff1a;拉普拉斯算子可以帮助检测图像中的边缘&#xff0c;即图像中亮度快速变化的位置。这些边缘通常…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

RocketMQ 消息重复消费

现象 触发消息后&#xff0c;在1s内收到了两次消息消费的日志。 消息消费日志重复&#xff0c;reconsumeTimes0&#xff0c;主机实例也不同&#xff0c;说明是同一条消息被消费了两次 分析 生产者发送消息的时候使用了重试机制&#xff0c;发送消息后由于网络原因没有收到MQ…

永磁同步电机PMSM负载状态估计simulink模型

永磁同步电机PMSM负载状态估计simulink模型&#xff0c;龙伯格观测器&#xff0c;各种卡尔曼滤波器&#xff0c;矢量控制&#xff0c;坐标变换&#xff0c;永磁同步电机负载转矩估计&#xff0c;pmsm负载转矩测量&#xff0c;负载预测&#xff0c;转矩预测的matlab/simulink仿真…

【C++】---STL容器适配器之queue

【C】---STL容器适配器之queue 一、队列1、队列的性质 二、队列类1、队列的构造2、empty()3、push()4、pop()5、size()6、front()7、back() 三、队列的模拟实现1、头文件&#xff08;底层&#xff1a;deque&#xff09;2、测试文件3、底层&#xff1a;list 一、队列 1、队列的…

【NR RedCap】Release 18标准中对5G RedCap的增强

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

R语言贝叶斯方法在生态环境领域中的应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域&#xff0c;其火爆程度已经跨越了学术圈&#xff0c;如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

使用微信开发者工具模拟微信小程序定位

哈喽&#xff0c;各位同僚们&#xff0c;我们平时在测试微信小程序的时候&#xff0c;如果小程序中有获取定位或者地图的功能&#xff0c;测试场景中常常需要去模拟不同的位置&#xff0c;例如我们模拟在电子围栏的外面、里面和边界区域等。那么&#xff0c;我们如何在模拟微信…

[笔试训练](八)

目录 022&#xff1a;求最小公倍数 023&#xff1a;数组中的最长连续子序列 024&#xff1a;字母收集 022&#xff1a;求最小公倍数 求最小公倍数_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 求最小公倍数公式&#xff1a;lcm(a,b)a*b/gcd(a,b)&am…

创建springboot项目的问题

IDEA搭建spring boot时报错Error: Request failed with status code 400 Could not find artifact org.springframework.boot:spring-boot-starter-parent:pom:3.2.5.RELEASE in alimaven (http://maven.aliyun.com/nexus/content/repositories/central/) 原因是父级依赖的版本…

Web前端开发 小实训(一) 成绩分类统计

用于学生web前端开发课程实训练习&#xff0c;掌握基本语法和数据类型 实训目的 使用分支语句&#xff0c;完成分数统计与等级对比,通过输入框输入分数&#xff0c;可以根据分数多少划分等级。 参考思路&#xff1a; 分析题目&#xff1a;根据输入分数进行等级划分。 操作过…