admin 管理员组文章数量: 887021
2024年1月10日发(作者:乱世佳人完整版在线观看电影)
cors解决跨域原理
当今的Web应用程序,在实现资源访问的时候,出于安全考虑,浏览器默认存在安全跨域限制,其原因是因为浏览器执行JavaScript脚本时,如果脚本来自不同的域,会危及用户计算机上保存的数据。CORS(Cross-Origin Resource Sharing,跨域资源共享)就是一个基于HTTP头部的机制, 能够让服务器与客户端之间,实现安全授权访问跨域资源。下面,我们将从CORS的请求流程及解决方案等几个方面,详细介绍CORS的工作原理。
一、请求流程
1. 在请求头部中指明跨域类型。 当前,主流浏览器网页使用XMLHttpRequest对象的方式来发出Ajax请求,并在请求头部中使用“X-Requested-With”标识一个字符串。“X-Requested-With”的值一般是:"XMLHttpRequest",供网站服务器辨别请求是否是Ajax请求。
2. 浏览器发现收到的响应头部中包含了CORS允许的关键字,如Access-Control-Allow-Origin,Access-Control-Allow-Methods等。
3. 浏览器将AJAX请求的readyState状态设置为2(收到响应头部)。
4. 如果响应头部中既没有Access-Control-Allow-Origin也没有Access-Control-Allow-credentials标签,浏览器就停止AJAX请求,并抛出CORS安全错误。
5. 然后,如果响应头部中包含了Access-Control-Allow-Origin,表示该响应能够被指定的域所访问。
6. 如果响应头部中包含了Access-Control-Allow-Credentials标签,表示服务器允许带身份凭证的请求访问该资源,那么浏览器会继续通过AJAX请求的方式发起实际的请求。
7. 响应头部中还有其他关键字,如:Access-Control-Allow-Methods,Access-Control-Allow-Headers,Access-Control-Expose-Headers等,这些关键字规定了服务器允许浏览器使用哪些HTTP请求
方法、HTTP请求头部信息,以及是否暴露响应头部信息。
二、解决方案
对于跨域访问,目前有四种解决方案,下面进行一一介绍。
1. JSONP原理
JSONP是一种操作方式,通过动态修改网页来实现跨域访问的。例如,使用script标签可以进行一个跨域请求。
2. 代理
代理是服务器上一个程序,可以接收request请求,然后将请求发送到目标服务器并接收目标服务器的响应,最后返回给客户端。代理可以实现浏览器端的跨域访问,客户端通过向自己的服务器发送request,然后自己的服务器又向目标服务器发送request,然后返回目标服务器的响应。这样客户端和目标服务器之间就没有跨域的风险了。
3. WebSocket
WebSocket是HTML5的一种新特性,其原理是:在页面打开时,首先“升级”协议,完成约定后直接使用TCP协议。
4. CORS
CORS 是一种很新的跨域解决方案。CORS定义必须服务器正确配置Access-Control-Allow-Origin,浏览器才能够安全地进行跨域访问。服务器在响应头部如果设置了“Access-Control-Allow-Origin”的值为请求域名,则该域名可以访问服务器指定的资源。
总体来说,跨域的问题是前端开发中常遇到的问题,需要通过深入理解CORS的原理和常用解决方案,才能在实际开发中遇到问题时,能够找到更好的解决方案。
版权声明:本文标题:cors解决跨域原理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1704866091h464954.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论