首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么可以在HTML和CSS中访问跨域图片,但不能在JS HTTP请求中访问?

在HTML和CSS中访问跨域图片是因为HTML和CSS是用于展示和渲染页面的标记语言和样式表,它们并不涉及网络请求和数据传输。当在HTML中使用<img>标签或在CSS中使用background-image属性引用跨域图片时,浏览器会自动发起GET请求去获取图片资源,但这并不违反同源策略。

然而,在JS中发起HTTP请求是涉及到网络通信的操作,而浏览器为了保护用户的安全,实施了同源策略。同源策略要求JS发起的HTTP请求必须与当前页面具有相同的协议、域名和端口,否则请求会被浏览器拦截。这是为了防止恶意网站通过JS请求用户的敏感数据或进行跨站脚本攻击。

虽然在JS中不能直接访问跨域资源,但可以通过一些技术手段来实现跨域请求,如JSONP、CORS、代理等。其中,JSONP利用<script>标签的跨域特性来获取数据,CORS是一种服务器端的解决方案,通过在服务器端设置响应头来允许跨域请求。代理则是将JS请求发送到同源的服务器,由服务器代为请求跨域资源并返回给JS。

总结起来,HTML和CSS中访问跨域图片是因为它们不涉及网络请求,而JS中不能直接访问跨域资源是因为浏览器实施了同源策略,为了保护用户的安全。如果需要在JS中访问跨域资源,可以使用JSONP、CORS、代理等技术手段来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Ajax进阶】JSONP的学习

作者主页: 作者主页查看更多前端教学 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录 了解同源策略   同源策略     什么是同源    ...浏览器对请求的拦截     如何实现数据请求 现如今,实现数据请求,最主要的两种解决方案,分别是JSONPCORS。 JSONP:出现的早,兼容性好。...的实现过程 jQuery的JSONP,也是通过script标签的src属性实现数据访问的,只不过,jquery采用的是动态创建和移除script标签的方式,来发起的JSONP的数据请求。...防抖的应用场景 用户输入框连续输入一串字符时,可以通过防抖策略,只输入完后,才执行查询的请求,这样可以有效减少请求次数,节约请求资源;   实现防抖   什么是节流 节流策略,顾名思义,可以减少一段时间内事件的触发频率...节流的应用场景 鼠标连续不断的触发事件(如点击),只单位时间内触发一次; 懒加载时要监听计算滚动条的位置,但不必每次滑动都触发,可以降低计算机的频率,而不必去浪费CPU资源。

1.2K30

如何进行渗透测试XSS站攻击检测

3.2.2.1.1. file的同源策略 之前的浏览器,任意两个file的URI被认为是同源的。本地磁盘上的任何HTML文件都可以读取本地磁盘上的任何其他文件。...Flash/SilverLight 浏览器的各种插件也存在需求。通常是通过服务器配置crossdomain.xml,设置本服务允许哪些域名的访问。...JSONP JSONP就是利用 标签的能力实现数据的访问请求动态生成的Java脚本同时带一个callback函数名作为参数。...源数据存储访问 存储浏览器的数据,如 localStorage IndexedDB,以源进行分割。每个源都拥有自己单独的存储空间,一个源的Java脚本不能对属于其它源的数据进行读写操作。...阻止访问 阻止写操作,可以检测请求的 CSRF token ,这个标记被称为Cross-Site Request Forgery (CSRF) 标记。

2.7K30
  • 前端基础理论试题——附答案

    HTML标签 用于表示无序列表。CSS,用于选择所有元素的通配符是 *。JavaScript,=== 运算符用于检查值类型是否完全相等。计算机网络,IP地址分为公有IP私有IP。...理论题答案资源共享(CORS)解释: 资源共享(CORS)是一种机制,它允许一个域中的Web应用程序请求从另一个域中获得资源。...处理方法: 在前端可以通过以下方式处理CORS问题:使用服务器代理: 将请求发送到本地服务器,然后由服务器代理将请求发送到目标服务器。这样,浏览器只会看到对同一请求,避免CORS问题。...CORS头设置: 目标服务器上配置CORS头,允许特定的或所有请求。通过响应头中添加Access-Control-Allow-Origin等相关头信息来允许请求。...JSONP利用标签的特性,通过动态创建标签实现请求

    21210

    Nginx与前端开发

    的确,Nginx的绝大部分功能,如果单纯的使用Node.js可以满足实现。...为什么要Nginx反向代理 使用反向代理最主要的两个原因: 1)安全及权限。可以看出,使用反向代理后,用户端将无法直接通过请求访问真正的内容服务器,而必须首先通过Nginx。...解决 众多的解决方式, 都不可避免的都需要服务端进行支持, 使用Nginx可以纯前端解决请求问题。...这样就可以正常请求到数据。 这样其实是通过nginx,用类似于hack的方式规避掉了浏览器限制,实现了访问。...页面内容修改 Nginx可以通过向页面底部或者顶部插入额外的cssjs文件,从而实现修改页面内容。

    1.1K10

    3000 字说说!面试官听完之后露出了满意的笑容

    关于的几个问题 为什么a.wang.com访问wang.com也算?...记住:安全链条的强度取决于最弱的一环,所有安全相关的问题都要谨慎对待。 为什么两个网站的IP一样,也算? 原因同上,因为IP也是可以共用的。 为什么可以使用CSSJS图片等?...同源策略限制的是数据访问,我们引用CSSJS图片的时候,其实并不知道其内容,我们只是引用。 CORS 什么是CORS?...只需要wang.com响应头里写ergou.com可以访问即可。这就是CORS。 实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以源通信。...默认情况下,Cookie不包括CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求,一起发给服务器。

    88030

    浅谈同源策略

    如果 B 是一个恶意页面,那么没有同源策略限制的前提下,它可以通过 Javascript 任意修改访问 A 的任何内容。...其实在网上很多情况下我们都会需要加载不同源的资源,比如在个人网站需要插入一张公共图床的图片,这种情况下个人网站公共图床上的图片必然是不同源的,但最后页面上能成功的加载图片并且能够看到,这又是为什么呢...语法错误信息只能在同源脚本捕捉到; 标签嵌入 CSS。...现代浏览器安全性可用性之间选择了一个平衡点,遵循同源策略的基础上,选择性地为同源策略“开放了后门。这也解释了为什么放在公共图床上的图片能够被正确的浏览的问题。...简单的来说,CORS 允许以下几种场景中使用 HTTP 请求: 由 XMLHttpRequest 或 Fetch 发起的 HTTP 请求; Web 字体( CSS 通过 @font-face

    1.2K10

    2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

    CSS盒子模型(Box Model)。在所有的HTML元素都可以看成一个盒子;CSS,Box Model这一术语被用来设计布局中使用。...1、hash ——即地址栏URL的#符号,它的特点在于:hash 虽然出现URL但不会被包含在HTTP请求,对后端完全没有影响,因此改变hash不会重新加载页面。...什么是同源策略 一个下的js脚本未经允许的情况下,不能访问另一个下的内容。通常判断的依据是协议、域名、端口号是否相同,不同则。...可通过 CSS的background 属性访问图片内容。这种方案同时还可以减少图片总字节数,节省命名词汇量。...所以,如果 JavaScript CSS 在外部文件,浏览器可以缓存它们,HTML 文档的大小会被减少而不必增加 HTTP 请求数量。

    1.1K12

    鹅厂原创 | Web前端踩坑记--静态资源优化总结

    减少文件请求数量方面大致有以下三方面: 合并js脚本文件 合并css样式文件 合并css引用的图片,使用sprite雪碧图。...[hash].css文件,所有js逻辑代码按照业务逻辑第三方库被抽离到了app.[hash].jsvendor.[hash].js文件。...关于其他的webpack用法配置,可以查询官方文档中文文档,这里就不一一详细说明了 4题外话 方面: CORS 我们知道由于现代浏览器安全策略的不断完善,对请求的限制也是各种各样。...当我们保存在静态资源文件的script对其他域名发起请求时就会遇到问题,如果没有做任何措施,请求会被浏览器拦截。...当前主流的解决方案主要是JSONPCORS IE9以下支持的HTTP method JSONP 支持 GET CORS 不支持 GETPOST 由表可见,随着前端不断发展,CORS是大趋势

    46110

    【.NET Core 3.0】框架之十二 || 与 Proxy

    p=8 一、为什么会出现的问题 问题由来已久,主要是来源于浏览器的”同源策略”。 何为同源?只有当协议、端口、域名都相同的页面,则两个页面具有相同的源。...; 所以说我们web,我们无法去获取请求,常见的就是无法通过js获取接口。...,很明显的把它放到了 config 的一个文件夹,是这样的,我们 index.js 可以端口号的配置,打包之后路径的配置,图片的配置 等等 但是 vue-cli 3.0 脚手架,去掉了 config...,这一块,完全不用后端做处理,但是服务器生产环境是不行的,那怎么办,既然本地的 node 服务可以代理,那打包后的 html 静态项目,有没有一个人站出来,充当代理的角色呢,哎!...这个时候你一定好奇,为什么仅仅配置下,就能访问该端口呢,不信的话,你可以 cmd 通过 netstat -an 命令来查看 8077 端口是否被使用 发现已经被监听使用,如果还不相信,你可以创建一个

    1.4K20

    Web 前端性能优化 : 如何有效提升静态文件的加载速度

    减少文件请求数量方面大致有以下三方面: 1、合并js脚本文件 2、合并css样式文件 3、合并css引用的图片,使用sprite雪碧图。...[hash].css文件,所有js逻辑代码按照业务逻辑第三方库被抽离到了app.[hash].jsvendor.[hash].js文件。...三、题外话 方面: CORS 我们知道由于现代浏览器安全策略的不断完善,对请求的限制也是各种各样。...当我们保存在静态资源文件的script对其他域名发起请求时就会遇到问题,如果没有做任何措施,请求会被浏览器拦截。...当前主流的解决方案主要是JSONPCORS 由表可见,随着前端不断发展,CORS是大趋势。

    4.8K00

    阿里前端二面常见面试题汇总_2023-03-01

    浏览器会询问服务器,当前所在的网页是否服务器允许访问的范围内,以及可以使用哪些HTTP请求方式和头信息字段,只有得到肯定的回复,才会进行正式的HTTP请求,否则就会报错。...CORSCookie相关问题: CORS请求,如果想要传递Cookie,就要满足以下三个条件: 在请求设置 withCredentials 默认情况下在请求,浏览器是不带 cookie 的。...postMessage是HTML5 XMLHttpRequest Level 2的API,且是为数不多可以操作的window属性之一,它可用于解决以下方面的问题: 页面其打开的新窗口的数据传递...1)nginx配置解决iconfont 浏览器访问jscss、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookiedomain信息,方便当前cookie写入,实现访问

    1.5K00

    Web前端性能优化——如何有效提升静态文件的加载速度

    减少文件请求数量方面大致有以下三方面: 1、合并js脚本文件 2、合并css样式文件 3、合并css引用的图片,使用sprite雪碧图。...[hash].css文件,所有js逻辑代码按照业务逻辑第三方库被抽离到了app.[hash].jsvendor.[hash].js文件。...题外话 方面: CORS 我们知道由于现代浏览器安全策略的不断完善,对请求的限制也是各种各样。...当我们保存在静态资源文件的script对其他域名发起请求时就会遇到问题,如果没有做任何措施,请求会被浏览器拦截。...当前主流的解决方案主要是JSONPCORS 由表可见,随着前端不断发展,CORS是大趋势。

    1.8K20

    前端面试题汇总

    常见方法:合并多个CSS文件js文件,利用CSS Sprites整合图像,Inline Images(使用 data:URL scheme实际的页面嵌入图像数据 ),合理设置HTTP缓存等。...(2)将JavaScriptCSS作为外部文件来引用:实际应用中使用外部文件可以提高页面速度,因为JavaScriptCSS文件都能在浏览器中产生缓存。...图像优化 (1)优化图片大小 (2)通过CSS Sprites优化图片 (3)不要在HTML中使用缩放图片 (4)favicon.ico要小而且可缓存 8、前端知识总结: 通过document.domain... 通过location.hash 通过HTML5的postMessage方法 通过jsonp 通过CORS 通过window.name 9、小程序与H5的区别 运行环境的不同...、jshtml加载顺序 html,css,js加载顺序 - NewLife365 - 博客园 29、谈谈document.readywindow.onload的区别 Jquery里面,我们可以看到两种写法

    2.8K30

    面试感悟:当经历所有大厂的实习面试后

    , 把元素隐藏起来,并且会改变页面布局,可以理解成页面把该元素删掉 10、为什么css放在顶部而js写在后面 1.浏览器预先加载css后,可以不必等待HTML加载完毕就可以渲染页面了 2.其实HTML...= 'demo.com' 2、window.postMessageht(data, url),h5的API,启动通信 复制代码 8、图片预加载懒加载 8.1、预加载: 提前加载图片...因为浏览器会维持htmlcssjs的顺序,样式表必须在嵌入的JS执行前先加载、解析完。而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。...,有权访问的变量函数时有序的,作用链的变量只能被向上访问 变量访问到window对象及被终止,作用链向下访问是不允许的 1.改变作用有 with try..的catch, 2.所有为定义的直接赋值的变量自动声明为全局作用...) 4.服务器接受到这个请求后,根据路经参数,经过后端的一些处理生成html代码返回给浏览器 5.浏览器拿到完整的html页面代码开始解析渲染,如果遇到外部的css或者js图片一样的步骤 6.浏览器根据拿到的资源对页面进行渲染

    1.2K00

    第四十九期:闲聊前端性能优化

    这也是为什么性能优化会将14kb作为初始响应优化的重点。 构建Dom树。DOM节点的数量越多,构建DOM树所需的时间就越长。当解析器发现非阻塞资源时,比如一张图片,浏览器就会请求这些资源并且继续解析。...同时一个值得注意的问题是,等待获取CSS的过程不会阻塞HTML的解析,但是它有可能阻塞JS代码,因为js代码经常用来查询css属性。...关键渲染路径 关键渲染路径是浏览器将 HTMLCSS JavaScript 转换为屏幕上的像素所经历的步骤序列。优化关键渲染路径可提高渲染性能。...当浏览器从(第三方)服务器请求资源时,必须先将该域名解析为 IP地址,然后浏览器才能发出请求。此过程称为 DNS解析。DNS 缓存可以帮助减少此延迟,而 DNS解析可以导致请求增加明显的延迟。...将两者结合起来可提供进一步减少请求的感知延迟的机会。

    98320

    美团前端常见面试题整理_2023-02-23

    浏览器会询问服务器,当前所在的网页是否服务器允许访问的范围内,以及可以使用哪些HTTP请求方式和头信息字段,只有得到肯定的回复,才会进行正式的HTTP请求,否则就会报错。...1)nginx配置解决iconfont 浏览器访问jscss、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx...代码压缩也是我们必做的性能优化方案,当然我们不止可以压缩 JS 代码,还可以压缩 HTMLCSS 代码,并且压缩 JS 代码的过程,我们还可以通过配置实现比如删除 console.log 这类代码的功能...懒加载也叫延迟加载,指的是长网页延迟加载图片的时机,当用户需要访问时,再去加载,这样可以提高网站的首屏加载速度,提升用户的体验,并且可以减少服务器的压力。...js 脚本 图片 怎么判断页面是否加载完成 Load 事件触发代表页面的 DOM,CSSJS图片已经全部加载完毕。

    1.9K10

    阶段七:浏览器安全

    32 | 同源策略:为什么XMLHttpRequest不能请求资源–Web页面安全 浏览器安全分为三大块:Web页面安全、浏览器网络安全、浏览器系统安全。...安全便利性权衡 安全性便利性是互斥的,比如上面的同源策略限制了一个页面中资源都需要来自一个源,也就是该页面的所有HTML文件、CSS文件JS文件等资源需要部署一台服务器,但是如果资源过多,或者说我们基于业务会将不同资源部署不同服务器上...使用该机制可以进行访问控制,从而使得数据传输得以安全进行。...,不完全统计为: 渲染进程:HTML解析、CSS解析、JS执行、图片解码、布局、绘制、XML解析等 浏览器内核:Cookie存储、Cache存储、网络请求、文件读取、下载管理、SSl/TSL、浏览器窗口管理...网络访问:网络访问是,渲染进程通过IPC向浏览器内核发送请求,浏览器内核看到这是一个网络请求,就会先检查是否有权限请求该URL符合要求(是否等、是否HTTS中保护了HTTP请求) 用户交互:安全沙箱影响了非常重要的用户交互

    47230

    问题的一次深入研究

    而在HTTP访问,又有了些许的变化。比如我们通常会从CDN上获取CSSJS等静态资源,而这些静态资源的域名当前的并不同源,但是HTTP允许这样的访问。...因此,我们可以HTTP上的分为三类: 通常允许源写入。比如链接,重定向表单提交。某些特殊的HTTP请求可能需要预检(preflight),后面将会详细介绍这个词。 内嵌式通常也是允许的。...>获得CSS文件,标签引入另一个源的图片 通常不允许源读取,但读访问通常通过嵌入泄露。例如,您可以读取嵌入式图像的宽度高度,以及嵌入式脚本的操作。前端可以通过嵌入式变相实现读取。...那为什么又需要 当前端框架兴起之后,前后端彻底分离的开发方式渐渐流行。前端后端往往部署不同的域名之上。前端通过访问后端的API获取数据,渲染前端界面,甚至进行路由跳转。...可以看到该服务器允许来自一切IP的访问,因为它返回的响应头为Access-Control-Allow-Origin: *。 你会发现,这里的请求和一般的HTTP请求并没有太大的差别。

    1.6K51

    Web前端知识体系精简

    JS没有会块级作用,只有函数作用,因此JS还存在着另外一种怪异现象,那就是变量提升。...为了防止XSS攻击,浏览器对Ajax做了限制,不允许Ajax请求服务器,就是只能访问当前域名下的url。 当然,如果确信你的站点不存在的风险,可以服务端主动开启请求。...也可以直接通过CORS或JSONP来实现。 JSONP是利用脚本(script)能力来模拟Ajax请求。...8、雪碧图 sprite 对于大型站点,为了减少http请求的次数,一般会将常用的小图标排到一个大图中,页面加载时只需请求一次网络, 然后css通过设置background-position来控制显示所需要的小图标...文件,则发出css文件请求,服务器返回该文件; 如果引用了外部js文件,则发出js文件请求,服务器返回该文件后开始运行; 渲染引擎继续载入html的部分的代码,并开始解析前面返回的

    1.4K30

    前端高频面试题及答案整理(二)

    因为 JSON 的语法是基于 js 的,因此很容易将 JSON js 的对象弄混,但是应该注意的是 JSON js 的对象不是一回事,JSON 对象格式更加严格,比如说 JSON 属性值不能为函数...浏览器会询问服务器,当前所在的网页是否服务器允许访问的范围内,以及可以使用哪些HTTP请求方式和头信息字段,只有得到肯定的回复,才会进行正式的HTTP请求,否则就会报错。...CORSCookie相关问题:CORS请求,如果想要传递Cookie,就要满足以下三个条件:在请求设置 withCredentials默认情况下在请求,浏览器是不带 cookie 的。...1)nginx配置解决iconfont浏览器访问jscss、img等常规静态资源被同源策略许可,但iconfont字体文件(eot|otf|ttf|woff|svg)例外,此时可在nginx的静态资源服务器中加入以下配置...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookiedomain信息,方便当前cookie写入,实现访问

    48020
    领券