前端跨站 HTTP 请求
前端跨站 HTTP 请求本文总结于此文章。主要总结下跨站XMLHttpRequest使用(基于fetch,不考虑兼容性i,fetch在IE下是不兼容跨域的,IE跨域不是基于XMLHttpRequest的),还有服务端。 定义跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求 分类总结为两种
跨源资源共享正如大家所知,出于安全考虑,浏览器会限制脚本中发起的跨站请求。为了能开发出更强大、更丰富、更安全的Web应用程序,开发人员渴望着在不丢失安全的前提下,Web 应用技术能越来越强大、越来越丰富。 所以就有了Web 应用工作组( Web Applications Working Group )推荐了一种新的机制,即跨源资源共享(Cross-Origin Resource Sharing (CORS))。
接下来就讲诉前端 不传cookie其实就是简单请求,
服务器端不传cookie服务端的请求头需要设置如下信息
origin参数指定一个允许向该服务器提交请求的URI.对于一个不带有credentials(即cookie)的请求,可以指定为'*',表示允许来自所有域的请求.如果想要更安全点,当然也可以指定URI,不过没多大必要。
指明资源可以被请求的方式有哪些(一个或者多个). 这个响应头信息在客户端发出预检请求的时候会被返。
需要设置好要允许的请求头类型,要不会报错。不可以设置为*。
前端前端Fetch实例
上传文件,不用设置header,header为空就行,fetch会自动处理好的。
其他方HTTP响应请求头都是可选的,不做介绍。 传cookie但是当我们想要保持登陆状态的时候就要传输验证信息,cookie就必不可少了。这就涉及到安全性问题了。 预请求不同于上面讨论的简单请求,“预请求”要求必须先发送一个 OPTIONS 请求给目的站点,来查明这个跨站请求对于目的站点是不是安全可接受的。这样做,是因为跨站请求可能会对目的站点的数据造成破坏。 当请求具备以下条件,就会被当成预请求处理:
服务端
通过这个设置,预请求就会被缓存起来,第二期请求就不会有预请求了。这个设置当然挺有用了。
前端
前端就要设置好credentials,其他的设置看情况,需要结合服务端设置。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |