关于xmlhttprequest:前端随笔记请求头Referer-错误

服务接口忽然报错,400服务谬误?起因是申请头短少Referer的值没送? 查了一下,客户端发动申请用的是xmlhttprequest对象生成的实例r,尝试: r.open('POST', ...)r.setRequestHeader('Referer', location.href)理论运行报错:Refused to set unsafe header "Referer" 再次遍历一遍代码,发现index.html呈现问题meta标签:<meta name="referrer" content="never"> 将标签移除,问题解决,申请头从新呈现 Referer属性。

March 28, 2022 · 1 min · jiezi

关于xmlhttprequest:简单请求和复杂请求

简略申请与简单申请的概念在波及到CORS的申请中,咱们会把申请分为简略申请和简单申请。满足以下条件的申请即为简略申请: 申请办法:GET、POST、HEAD除了以下的申请头字段之外,没有自定义的申请头AcceptAccept-LanguageContent-LanguageContent-TypeDPRDownlinkSave-DataViewport-WidthWidthContent-Type的值只有以下三种(Content-Type个别是指在post申请中,get申请中设置没有实际意义)text/plainmultipart/form-dataapplication/x-www-form-urlencoded 非简略申请即为简单申请。简单申请咱们也能够称之为在理论进行申请之前,须要发动预检申请的申请。 预检申请(OPTIONS申请)为什么要发预检申请咱们都晓得浏览器的同源策略,就是出于平安思考,浏览器会限度从脚本发动的跨域HTTP申请,像XMLHttpRequest和Fetch都遵循同源策略。 浏览器限度跨域申请个别有两种形式: 浏览器限度发动跨域申请跨域申请能够失常发动,然而返回的后果被浏览器拦挡了个别浏览器都是第二种形式限度跨域申请,那就是说申请已达到服务器,并有可能对数据库里的数据进行了操作,然而返回的后果被浏览器拦挡了,那么咱们就获取不到返回后果,这是一次失败的申请,然而可能对数据库里的数据产生了影响。为了避免这种状况的产生,标准要求,对这种可能对服务器数据产生副作用的HTTP申请办法,浏览器必须先应用OPTIONS办法发动一个预检申请,从而获知服务器是否容许该跨域申请:如果容许,就发送带数据的实在申请;如果不容许,则阻止发送带数据的实在申请。 预检申请的特殊性一、OPTIONS不会携带申请参数和cookie,也不会对服务器数据产生副作用二、Access-Control-Request-Method和Access-Control-Request-Headers//预检申请申请头OPTIONS /resources/post-here/ HTTP/1.1Host: bar.otherAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflateAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7Connection: keep-aliveOrigin: http://foo.exampleAccess-Control-Request-Method: POSTAccess-Control-Request-Headers: X-PINGOTHER, Content-Type首部字段 Access-Control-Request-Method 告知服务器,理论申请将应用 POST 办法。首部字段 Access-Control-Request-Headers 告知服务器,理论申请将携带两个自定义申请首部字段:X-PINGOTHER 与 Content-Type。服务器据此决定,该理论申请是否被容许。 三、OPTIONS申请响应头响应头Access-Control-Allow-Origin: http://foo.exampleAccess-Control-Allow-Methods: POST, GET, OPTIONSAccess-Control-Allow-Headers: X-PINGOTHER, Content-TypeAccess-Control-Max-Age: 86400首部字段 Access-Control-Allow-Methods 表明服务器容许客户端应用 POST,GET 和 OPTIONS 办法发动申请。 首部字段Access-Control-Allow-Headers 表明服务器容许申请中携带字段X-PINGOTHER 与Content-Type。与 Access-Control-Allow-Methods一样,Access-Control-Allow-Headers的值为逗号宰割的列表。 最初,首部字段 Access-Control-Max-Age 表明该响应的无效工夫为 86400 秒,也就是 24 小时。在无效工夫内,浏览器毋庸为同一申请再次发动预检申请。请留神,浏览器本身保护了一个最大无效工夫,如果该首部字段的值超过了最大无效工夫,将不会失效。预检申请实现之后,发送理论申请

April 24, 2021 · 1 min · jiezi