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

script中的src

 

<script src="http://www.somewhere.com/afile.js"></script>

浏览器在解析这个资源时,会向 src 属性指定的路径发送一个 GET 请求,以取得相应资源,假定

是一个 JavaScript 文件。这个初始的请求不受浏览器同源策略限制,但返回并被执行的 JavaScript 则受限制。

当然,这个请求仍然受父页面 HTTP/HTTPS 协议的限制。

这段话主要涉及到同源策略(Same-Origin Policy)和跨源资源共享(CORS)在浏览器中的应用。以下是对这段话的逐步解释:

同源策略

同源策略是一种安全机制,旨在防止一个网站的脚本与另一个网站的内容进行交互

同源(Same-Origin)是指两个 URL 具有相同的协议、域名和端口。只有在以下这三个条件都相同的情况下,浏览器才会认为这两个 URL 是同源的。这是为了确保安全性,防止恶意网站通过脚本访问另一个网站的内容。

1.协议(如 HTTP 或 HTTPS)

2.域名(如 example.com)

3.端口(如 :80 或 :443)

--------------------------------------------------------------------------------

请求不受同源策略限制

这意味着某些请求(例如,向第三方 API 发送请求)可以成功发送,即使它们不符合同源策略。这通常适用于以下情况:

- JSONP: 通过 <script> 标签请求数据,通常不受同源策略限制。

- 某些类型的请求: 比如使用 iframe 等方式加载外部内容。

返回的 JavaScript 受同源策略限制

一旦请求的响应是 JavaScript 代码并被执行,浏览器会检查该 JavaScript 是否符合同源策略。如果不符合,则会限制该脚本的执行,确保防止潜在的安全风险。

浏览器如何检查 JavaScript 是否符合同源策略主要依赖于以下几个方面:

1. 请求的来源

当网页发送请求(如通过 <script> 标签、AJAX 或 Fetch API)时,浏览器会记录该请求的来源(即发起请求的页面的协议、域名和端口)。

2. 响应的来源

当接收到响应(例如,一个 JavaScript 文件)时,浏览器会检查响应中包含的内容是否来自同源。如果响应是一个脚本,浏览器会比较该脚本的来源与请求页面的来源。

3. 执行环境

- 脚本标签: 当使用 <script> 标签加载外部 JavaScript 文件时,浏览器会在加载该文件前检查其来源。如果文件的 URL 不符合同源策略,浏览器会阻止该脚本的执行。

- CORS

- : 对于通过 XMLHttpRequest 或 Fetch API 进行的请求,允许跨源请求的方式是通过设置 CORS(跨源资源共享)头来实现的。服务器需要在响应中包含特定的 CORS 头(如 Access-Control-Allow-Origin)来指示哪些源可以访问其资源。

4. 安全策略

- Content Security Policy (CSP): CSP 是一种额外的安全层,可以帮助防止跨站脚本(XSS)攻击。如果网站设置了 CSP,浏览器会根据策略限制哪些源的脚本可以执行。

5. 错误处理

如果脚本的来源不符合同源策略,浏览器通常会在控制台提供错误信息,指示脚本无法被执行。例如,可能会出现类似“跨源访问被阻止”的错误。

总结

浏览器通过记录请求和响应的来源、比较它们的协议、域名和端口来检查 JavaScript 是否符合同源策略。如果不符,浏览器将限制该脚本的执行,从而保护用户的安全。

HTTP/HTTPS 协议的限制

即使请求本身不受同源策略的限制,仍然需要遵循原页面的 HTTP 或 HTTPS 协议。例如:

- 如果父页面使用 HTTPS,尝试通过 HTTP 加载资源可能会被浏览器阻止。为了安全,混合内容(HTTP 和 HTTPS 的结合)通常是被禁用的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开放API接口时要注意的安全处理总结
  • antd table 单元格编辑 触发 DatePicker(日期组件)使日期面板受控
  • 【LabVIEW学习篇 - 19】:人机界面交互设计03
  • 项目进度一
  • 鸿蒙NEXT(API 12)【蓝牙设置】 网络开发
  • 如何使用PTK一键安装opengaussdb 5.0
  • 结构体命名的几种方式
  • oracle 数据库 day0823
  • NC 最小的K个数
  • AI大模型的饕餮盛宴,系统学习大模型技术,你想要的书都在这里了
  • 什么是ESB(企业服务总线)?
  • C语言---函数指针基础总结万字(4)
  • 【Tools】大模型多模态概念简介
  • 7系列FPGA HR/HP I/O区别
  • Elastic Stack--ES的DSL语句查询
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java IO学习笔记一
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 构造函数(constructor)与原型链(prototype)关系
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 面试遇到的一些题
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 双管齐下,VMware的容器新战略
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • # C++之functional库用法整理
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.ajax()方法详解
  • $.each()与$(selector).each()
  • (Qt) 默认QtWidget应用包含什么?
  • (solr系列:一)使用tomcat部署solr服务
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (黑马点评)二、短信登录功能实现
  • (回溯) LeetCode 77. 组合
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (四)模仿学习-完成后台管理页面查询
  • (五)网络优化与超参数选择--九五小庞
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • ./configure,make,make install的作用
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core 控制台应用程序读取配置文件app.config