发表于: 2021-09-03 00:01:45
1 1817
前端垮域问题有哪些常用的解决方式?
跨域是a页面想要获取b页面资源,如果a,b页面的协议、域名、端口号、子域名不同,所进行的访问都是跨域的,而浏览器一般为了安全都限制了跨域访问,也就是不允许跨域访问资源。
1.JSONP
- JSONP是一个非官方协议,它允许在服务器端集成script tags返回至客户端,通过javascript callback的形式实现跨域访问。
- 基本思想:网页通过添加一个
<script>
元素,向服务器请求JSON数据,这种做法不受同源策略限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。
2.window.name
- window.name+iframe需要目标服务器响应window.name,window对象有一个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window. name都有读写的权利,window.name 是持久存在一个窗口载入过的所有页面中的!
3.window.postMessage
- HTML5引入了一个全新的API:跨文档消息传输Cross Document Messaging 。它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)
- web sockets原理:在JS创建了web sockets之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockets协议。
otherWindow.postMessage(message, targetOrigin)
otherWindow:指目标窗口,也就是给哪个窗口发消息,是window.frames属性的成员或者由window.open方法创建的窗口。
参数说明:
(1)message:是要发送的消息,类型为string,object
(2)targetOrigin:是限定消息接收范围,不限制使用“ * ”
4.CORS
- 基本思想:使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。
5.web sockets
- web sockets是浏览器的一种API,它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)
- web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。
http状态码有那些?分别代表是什么意思?
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。 当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码由三个十进制数字组成,三位数字代码分别代表着不同的请求状态,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。
HTTP状态码分类
HTTP状态码共分为5种类型:
1开头:(被接受,需要继续处理。)这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
2开头 (请求成功)这一类型的状态码,代表请求已成功被服务器接收、理解、并接受
3开头 (请求被重定向)这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 location 域中指明。
4开头:(请求错误)这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。
5开头:(服务器错误)这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。
如何记忆这些状态码
Http 状态码是做Web开发的必备的基础知识,面试中也会经常出现这方面的考题。但是要记住全部的状态码不是一件容易的事,部分状态码记忆:
200 欢迎回来,主人 (正常;请求已完成。)
301 人家搬家了 (已移动 — 请求的数据具有新的位置且更改是永久的。)
307 不是这里,换个地方啦 (重新请求的URL,客户端自动重新请求新的地址)
400 不要把奇怪的东西给人家嘛 (错误请求 — 请求中有语法问题,或不能满足请求。)
403 这里不可以啦!(禁止 — 即使有授权也不需要访问。)
404 这里什么都没有 --- 人家是平的啦。 (找不到 — 服务器找不到给定的资源;文档不存在。)
405 打开方式不对 (资源被禁止)
有哪些常见的状态码?
一般只需要了解以下常见的状态码就够了:
200 OK:服务器成功处理了请求(这个是我们见到最多的)
301 Moved Permanently:资源移动。所请求资源自动到新的URL,浏览器自动跳转到新的URL
304 Not Modified:服务端的资源与客户端上一次请求的一致,不需要重新传输,客户端使用本地缓存的即可
400 Bad Request:用于告诉客户端它发送了一个错误的请求
404 Not Found:(页面丢失)未找到资源
500 Internal Server Error:服务器内部出现了错误
501 Internal Server Error:服务器遇到一个错误,使其无法对请求提供服务
评论