热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTTPS的頁面發送不了HTTP要求?——關於夾雜內容

我們都曉得HTTPS的頁面是發送不了HTTP要求的,那末是什麼緣由致使HTTPS頁面不能發送HTTP要求呢?如果有發送的需求,怎樣才發送?近來恰好遇到了這個題目,而且搜了半天沒搜到

我們都曉得HTTPS的頁面是發送不了HTTP要求的,那末是什麼緣由致使HTTPS頁面不能發送HTTP要求呢?如果有發送的需求,怎樣才發送?近來恰好遇到了這個題目,而且搜了半天沒搜到靠譜的答案,所以有了本文。

1. 故事劈頭

我在《Jquery ajax, Axios, Fetch區分之我見》中提到過,Fetch作為一種不同於XHR的要求體式格局,展現了它更多API,以及相符ES範例的優越遠景;更不必說它能夠支撐POST跨域。恰好工作上有效post要領上報結果數據的要求,我小手一揮,不必背景兄弟們麻煩了,我能夠搞定,把結果上報換成了Fetch,美滋滋。

過了一段時間,背景跑過來講,如今還有些其他HTTP站點的數據上報。我試了一下,挪動端根本就沒有發出這個要求,這……

2. 為何HTTPS頁面發送不了HTTP要求

有些人說是跨域題目,真的是如許嗎?

同源戰略:1. 協定雷同 2. 域名雷同 3.端口雷同

只管HTTPS接見HTTP確切不相符同源戰略中的協定雷同,然則在當代瀏覽器里,縱然是域名雷同的要求,也是會出現以下報錯,而不是跨域報錯。

《HTTPS的頁面發送不了HTTP要求?——關於夾雜內容》

這也很好明白,畢竟夾雜內容的平安戰略是在瀏覽器端剖斷的,而是不是能跨域要看服務器返回的Response頭,要求都被瀏覽器block掉了,也就不存在是不是跨域的題目。

那什麼是夾雜內容?

夾雜內容:初始 HTML 內容經由過程平安的 HTTPS 銜接加載,但其他資本(比方,圖象、視頻、樣式表、劇本)則經由過程不平安的 HTTP 銜接加載[1]。由於頁面經由過程 HTTPS 加載的初始要求是平安的,然則又加載了不平安的HTTP內容,因而稱之為夾雜內容。

由於HTTPS的S自身就是Secure的意義,當代瀏覽器最初會針對此範例的內容顯現正告,以向用戶表明此頁面包含不平安的資本。然則縱然顯現正告,頁面也已加載,用戶的平安依然受到了要挾。所以沒過多久,Chrome和Firefox就直接阻斷掉了這類的要求。

這就是HTTPS頁面為何發送不了HTTP的緣由。

2. 打破體式格局

只管如今主流瀏覽器都已block掉了HTTPS頁面上的HTTP要求,然則我們照樣能夠經由過程被動夾雜內容來發送get要求。

被動夾雜內容:指的是不與頁面其餘部分舉行交互的內容,包含圖象、視頻和音頻內容 ,以及沒法與頁面其餘部分舉行交互的其他資本。

主動夾雜內容: 指的是能與頁面交互的內容,包含瀏覽器可下載和實行的劇本、樣式表、iframe、flash 資本及其他代碼。[1]

由於進擊者能夠經由過程不平安的HTTP內容來進擊平安的HTTPS頁面,所以這類要求被嚴厲阻斷掉了————這也是為何我們的Fetch要求被幹掉了。所以我們能夠在必不得已的情況下,用img.src的體式格局來發送要求。固然,要求要領只能是get。

sendHttpRequest: () => {
const img = new Image();
img.src = 'http://xxx.com//你的要求'
}

這時候,瀏覽器只會在控制台報warning,而不會block我們的要求。

總結

出於HTTPS的平安戰略,瀏覽器會阻斷HTTPS上的非平安要求(HTTP)要求,然則我們能夠運用被動夾雜內容的體式格局來逾越這個平安戰略。

參考文章:

  1. 《什麼是夾雜內容》

推荐阅读
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 使用parent.xadmin.add_tab()方法打开新的标签页重点是这个parent,折磨了我一下午,原来是没有搞清应该从父页面打开。最开始的xa ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • java.lang.Class.getDeclaredMethod()方法java.lang.Class.getDeclaredMethod()方法用法实例教程-方法返回一个Met ... [详细]
  • ImgettingabugwithInternetExplorer.Theiframedoesnthavecorrectsizeanditisdisplayedo ... [详细]
  • 摘要:我很喜欢看各个产品的Bug追踪系统,比如jQuery的BugTracker,因为在Bug系统中总能发现一些非常细节的问题࿰ ... [详细]
  • 前端监控数据网络(要求阻拦)
    所谓web,纵然你我素未谋面,便知志趣相投;深居简出,亦知天下之大。01—为何阻拦要求如今的web运用,大都是经由过程要求(http)去猎取资本,拿到资本后再显现给用户,一个页面中 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • ajaxfileupload.js 兼容ie9,10
    在使用ajaxfileupload.js上传文件时,ie9和ie10会报INVALID_CHARACTER_ERR(5)的错误,导致无法上传成功;网上查了一系列处理方式:如:把代码 ... [详细]
author-avatar
道貌岸然小皇猪_497_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有