前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端测试题:有关于js中跨域请求的说法,错误的是?

前端测试题:有关于js中跨域请求的说法,错误的是?

作者头像
舒克
发布2020-06-02 16:59:45
1.2K0
发布2020-06-02 16:59:45
举报

考核内容:javascript 跨域的使用

题发散度: ★

试题难度: ★

解题思路:

什么是跨域?

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。

什么是同源策略?

同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

跨域请求安全性问题

为什么浏览器要限制跨域请求,其中最主要的原因就是安全性问题,比如CSRF攻击。但是,既然不安全,为什么我们又要跨域请求呢?原因是有时为了服务器便于管理和减轻服务器压力,公司会把不同的资源放在不同的服务器上,这样就存在很多子域,这时比如A子域的html资源要去访问B子域的图片资源就会出现跨域请求了。

解决处理跨域请求方法

1. JSONP请求

ajax请求不同域会出现跨域请求,无访问权限,但平时在HTML页面写的<script>、<link>这些标签的src属性是不受跨域请求限制的,于是,JSONP的策略就是服务器端可以动态生成JSON文件,把客户端需要的数据放到这个文件中,让客户端通过<script>标签的src属性来请求这个文件,这样,一种解决方案就出来了

不过,JSONP方式无法发送POST请求,只能通过URL后面带参数实现,而且想要确定JSONP的请求是否失败并不容易,大多数实现都是结合超时时间来进行判断的。

2. xmlhttprequest请求

这种方法就是常说的AJAX方法,这是所有浏览器所支持的,所以我们只需要做的是在服务器端判断是否允许这个域访问,剩下的浏览器会自动做好

3. fetch请求

fetch是ES6中基于promise实现的,也可以结合async/await.

Fetch 是一个更理想的替代 xmlhttprequest 的方案

一个基本的 fetch 请求设置起来很简单

注意:所有版本的 IE 均不支持原生 Fetch

所以 跨域请求目前不仅只有 XMLHTTPRequest 方法;

答案:错误的是

代码语言:javascript
复制
 A. 跨域请求目前只有 XMLHTTPRequest 方法
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档