当前位置: 首页 > news >正文

为什么使用网络请求时,遇到 HTTP 请求返回 404(Not Found)错误,而使用 HTTPS 请求则正常工作

目录

1. 服务器配置问题

2. 资源仅限于 HTTPS

3. 重定向未设置或错误

4. 虚拟主机配置问题

5. 防火墙或安全策略

6. CDN(内容分发网络)设置

7. 浏览器缓存或应用缓存

总结


这通常与服务器配置、重定向规则、安全策略或服务的可用性有关。以下是一些常见的原因及解释:

1. 服务器配置问题

有些服务器被配置为仅处理 HTTPS 请求,而不处理 HTTP 请求。例如,服务器可能强制使用加密连接(HTTPS),以确保数据在传输过程中是安全的。如果有人试图使用 HTTP 连接,服务器可能未设置正确的重定向规则,导致 HTTP 请求返回 404

  • 解释:服务器可能未配置正确的 HTTPHTTPS 重定向,导致 HTTP 请求无法找到相应的资源。
  • 解决方案:在服务器上检查配置,确保 HTTP 请求自动重定向到 HTTPS,或者客户端直接使用 HTTPS

2. 资源仅限于 HTTPS

某些服务器可能对特定资源或 API 限制只能通过 HTTPS 访问。对于安全性要求较高的服务,例如金融类应用或敏感数据传输,服务端可能会拒绝任何非加密的 HTTP 请求并返回 404

  • 解释:服务端可能对某些资源启用了 HTTPS 访问控制,而禁止通过 HTTP 访问。
  • 解决方案:确保请求的资源支持 HTTP,或者强制使用 HTTPS

3. 重定向未设置或错误

有时服务器会通过 HTTP 301 或 302 重定向来自动将 HTTP 请求引导到 HTTPS。但如果服务器没有正确配置重定向,或者重定向路径错误,HTTP 请求会导致 404 错误。

  • 解释:如果 HTTP 请求没有正确重定向到 HTTPS,则可能返回错误的 404 页面。
  • 解决方案:服务器管理员需要检查并配置正确的重定向规则。

4. 虚拟主机配置问题

有些服务器使用虚拟主机(Virtual Host)来区分 HTTPHTTPS 请求。如果 HTTP 虚拟主机配置错误,或者对应的资源文件只配置在 HTTPS 上,HTTP 请求就可能返回 404 错误。

  • 解释:虚拟主机可能只为 HTTPS 配置了相应的资源,而没有为 HTTP 提供相同的资源。
  • 解决方案:检查服务器的虚拟主机配置,确保 HTTP 请求能够访问同样的资源,或正确重定向到 HTTPS

5. 防火墙或安全策略

某些服务器或应用后端配置了防火墙或安全策略,阻止所有的 HTTP 请求以确保数据安全。服务器只允许加密连接来传输敏感数据,所有的 HTTP 请求会被拒绝甚至返回 404 错误。

  • 解释:安全策略可能只允许通过 HTTPS 访问,而直接拒绝或屏蔽 HTTP 请求。
  • 解决方案:检查服务器的安全配置,确保通过 HTTP 的请求是被允许的(如果需要),否则只使用 HTTPS

6. CDN(内容分发网络)设置

如果你使用了 CDN 作为内容分发网络,有些 CDN 会针对 HTTPHTTPS 进行不同的缓存或配置。某些资源可能通过 CDN 仅在 HTTPS 下可用,而 HTTP 请求会返回 404

  • 解释:CDN 可能只缓存或分发 HTTPS 版本的资源,而 HTTP 请求无法找到资源。
  • 解决方案:检查 CDN 配置,确保它能够处理 HTTP 请求,或者将所有请求都使用 HTTPS

7. 浏览器缓存或应用缓存

在某些情况下,404 错误可能与缓存机制有关。客户端(浏览器或应用)可能缓存了 HTTP 版本的错误响应,而在使用 HTTPS 时会重新获取正确的资源。

  • 解释:客户端可能缓存了之前 HTTP 请求的 404 响应,因此再次访问时返回相同的结果。
  • 解决方案:清理浏览器缓存或应用缓存,并重新尝试访问。

总结

当你在 HTTP 请求时遇到 404 错误,而 HTTPS 请求没有问题,可能的原因包括:

  • 服务器配置问题,导致 HTTP 请求无法找到资源或未正确重定向。
  • 服务端强制资源只能通过 HTTPS 访问。
  • 安全策略、虚拟主机配置、防火墙、CDN 或缓存等因素也可能影响 HTTP 请求。

最佳实践是始终使用 HTTPS 进行通信,以确保数据的安全性和兼容性。如果你有更多问题或具体的应用场景,欢迎进一步讨论!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 蛇优化算法(Snake Optimization, SO)优化RBF神经网络的扩散速度实现多数入多输出数据预测,可以更改数据集(MATLAB代码)
  • 建筑楼宇电气安全与能效管理
  • 【JVM】JVM解析字节码文件过程(一)
  • Vue条件判断:v-if、v-else、v-else-if、v-show 指令
  • MySQL 升级:MySQL Server 变更详解 (8.0.36 ~ 8.0.37)
  • Fiddler不仅可以抓包,还可以做接口测试喔
  • 【ACM出版,高录用EI快检索】第七届计算机信息科学与人工智能国际学术会议(CISAI 2024,9月6-8)
  • 硬布线控制器的设计
  • MinerU pdf文档解析markdown格式、内容提取
  • 【Qt笔记】Qt建立UDP通信
  • 面试题:Rabbitmq怎么保证消息的可靠性?
  • 电脑桌面管理如何做?2024电脑桌面终极管理方法分享
  • 【安全靶场】-DC-5
  • 『基础』OS-1计算机系统概述_操作系统发展历程及它的运行环境
  • 机器人蓝牙通信绕坑
  • “大数据应用场景”之隔壁老王(连载四)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 3.7、@ResponseBody 和 @RestController
  • AWS实战 - 利用IAM对S3做访问控制
  • CentOS6 编译安装 redis-3.2.3
  • HomeBrew常规使用教程
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JavaScript函数式编程(一)
  • Java程序员幽默爆笑锦集
  • JS函数式编程 数组部分风格 ES6版
  • laravel 用artisan创建自己的模板
  • php ci框架整合银盛支付
  • vue.js框架原理浅析
  • 将 Measurements 和 Units 应用到物理学
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 说说我为什么看好Spring Cloud Alibaba
  • 正则表达式-基础知识Review
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # 飞书APP集成平台-数字化落地
  • #define与typedef区别
  • #QT(一种朴素的计算器实现方法)
  • $forceUpdate()函数
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (19)夹钳(用于送货)
  • (2)空速传感器
  • (6)STL算法之转换
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (rabbitmq的高级特性)消息可靠性
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法)N皇后问题
  • (一)WLAN定义和基本架构转
  • (转)人的集合论——移山之道
  • ***检测工具之RKHunter AIDE
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .form文件_一篇文章学会文件上传
  • .gitignore文件---让git自动忽略指定文件
  • .htaccess 强制https 单独排除某个目录