前言:随着工作时间的增加,之前学的东西慢慢忘记了,等有时间再整理一些资料,算是一种审查。本人只是一个前端工匠,防止自己成为【断网就无法工作的程序员】URLComposition协议的完整结构1.protocol(协议):指定使用的传输协议,下面是表列出了协议属性的有效方案名称。最常用的是HTTP协议,也是WWW中使用最广泛的协议。http-用于访问资源的超文本传输??协议。格式http://https-使用基于安全套接字层的超文本传输??协议访问资源。格式https://ftp-通过FTP访问资源。格式FTP://mailto-通过SMTP访问的电子邮件地址。格式mailto:ldap-轻型目录访问协议搜索文件-资源是本地计算机上的文件。格式file://news-Usenet新闻组gopher-Gopher协议telnet-Telnet协议主机名(hostname)是指存放资源的服务器的域名系统(DNS)主机名或IP地址。有时,连接到服务器所需的用户名和密码(格式:用户名:密码)也可以包含在主机名之前。端口号(port)Integer,可选,省略则使用scheme的默认端口。各种传输协议都有默认的端口号,比如http的默认端口是80,https的默认端口是443路径和文件名(path)由零个或多个“/”符号分隔的字符串,一般用来表示主机上的目录或文件地址参数的名称和值由“=”符号分隔。哈希值#用于指导浏览器的动作,对服务器完全无用。因此,#不包含在HTTP请求中。这些字符都不会发送到服务器端。更改#不会触发页面重新加载更改#将更改浏览器的访问历史记录默认情况下,Google的网络蜘蛛会忽略URL的#部分。不过Google也规定,如果想让Ajax生成的内容被浏览引擎读取,可以使用“#!”在URL中,Google会自动将其后面的内容转换为查询字符串的值_escaped_fragment_Same-originpolicy协议相同,域名相同,端口相同。如果不是同源,有3种行为被限制(1)无法读取Cookies、LocalStorage和IndexDB。(2)获取不到DOM。(3)AJAX请求无法发送。CookieCookie是服务器写入浏览器的一小段信息,只有同源网页才能共享。cookie的组成部分Set-Cookie:NAME=VALUE;过期=日期;路径=路径;域名=DOMAIN_NAME;SECURENAME=VALUENAME是cookie的名称,VALUE是cookie的值。字符串“NAME=VALUE”中不包含分号、逗号、空格等字符。Expires=DATE:Expires变量是一个只写变量,它确定cookie的有效到期日期。属性值DATE必须以特定格式写入:星期几、DD-MM-YYHH:MM:SSGMT,GMT表示这是格林威治标准时间。反之,如果不是这样写的,系统就无法识别。这个变量可以保存。如果是default,则Cookie的属性值不会保存在用户的硬盘中,只保存在内存中,Cookie文件会随着浏览器的关闭自动消失。Domain=DOMAIN-NAME:Domain该变量为只写变量,决定Web服务器中哪些Internet域可以读取浏览器访问的cookies,即只有来自该域的页面才能使用cookie中的信息。此设置是可选的,如果默认情况下,cookie的属性值设置为web服务器的域名。Path=PATH:Path属性定义了web服务器上的哪些路径可以获得服务器设置的cookies。通常,如果用户输入的URL中的路径部分从第一个字符开始包含Path属性定义的字符串,则浏览器认为检查通过。如果Path属性的值为“/”,则Web服务器上的所有WWW资源都可以读取该cookie。Secure:在cookie中标记该变量,表示只有当浏览器与WebServer之间的通信协议为加密认证协议时,浏览器才会向服务器提交相应的cookie。目前只有一种这样的协议,就是HTTPS。RequestHeadersCookie中cookies的传输格式:KEY=VALUE;键=值;KEY=VALUE是没有域和过期时间的跨域处理。两个网页的一级域名相同,二级域名不同。document.domain共享cookie。document.domain='example.com';如果两个网页的来源不同,则无法获取对方的DOM。典型的例子是iframe窗口和window.open方法打开的窗口,不能和父窗口通信。除了为AJAX设置服务器代理(浏览器请求同源服务器,后者请求外部服务),vue项目中开发环境的跨域处理proxyTabledev:{//PathsassetsSubDirectory:'static',assetsPublicPath:'./',proxyTable:{'/api':{target:'http://temp.com',//请替换成你需要跨域请求的地址changeOrigin:true,pathRewrite:{'^/api':''}}}}proxyTable中pathRewrite的/api理解为用'/api'替换target中的地址。当我们在以下组件中删除接口时,我们直接使用api代替。可以通过三种方式来规避此限制。JSONPWebSocketCORSJSONP是服务端和客户端跨源通信的通用方法。最大的特点是简单适用,支持所有老式浏览器,服务器修改很小。其基本思想是网页通过添加
