热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sessionstorage可以跨域吗_跨域(服务端)CORS

前后端分离项目,前后端请求访问通,首先需要解决跨域问题什么是跨域,跨域的前提是什么?跨域的产生来源于现代浏览器所通用的同源策

前后端分离项目,前后端请求访问通,首先需要解决跨域问题

什么是跨域,跨域的前提是什么?

跨域的产生来源于现代浏览器所通用的同源策略(包括ajax/fetch请求,dom渲染:比如iframe等,这样在一定程度上防止了 CSRF 攻击)

跨域主要是浏览器行为,是客户端浏览器的行为,浏览器根据同源策略,判断是否是跨域。

服务器端和服务器互相请求,是没有跨域这种说法的

浏览器出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头

所有请求都会产生跨域吗?

简单请求不会产生跨域,复杂请求才会产生跨域,

跨域请求截断

跨域的情况下,请求依然跨域到达服务器,并且服务器可以正常响应,并返回数据,服务器不会报错,但是由于浏览器的同源策略并没有把服务器的响应数据给到浏览器,浏览器会报错(浏览器F12,控制台跨域看到),因为违反了浏览器的同源策略。

预检请求是做什么的?

浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 COOKIEs 和 HTTP 认证相关数据),“预检请求” 的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响。但是“预检请求”会有安全问题,泄漏服务器的允许方法类型等信息

OPTIONS:response字段包含允许的方法,表明服务器允许客户端使用 POST, GET 和 OPTIONS 方法发起请求。

Access-Control-Allow-Methods: POST, GET, OPTIONS

怎么解决跨域?

跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器,让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。

跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。

· Access-Control-Allow-Origin:接受的域名请求,*表示任意域名· Access-Control-Allow-Methods:允许的方法类型:get,put· Access-Control-Allow-Headers:· Access-Control-Allow-Credentials:true,允许携带凭证· Access-Control-Max-Age

Access-Control-Allow-Origin:浏览器根据接受到的响应头里的 Access-Control-Allow-origin 字段做匹配,若无该字段,说明不允许跨域,从而抛出一个错误,若有该字段,则对字段内容和当前域名做匹配,如果同源,则说明可以跨域,浏览器接受该响应,若不同源,则说明该域名不可跨域,浏览器不接受该响应,并抛出一个错误。通配符*,表示允许来自所有域的请求。

Access-Control-Allow-Credentials:一般而言,对于跨域 XMLHttpRequest 或 Fetch 请求,浏览器不会发送身份凭证信息。如果要发送凭证信息,需要设置 XMLHttpRequest 的某个特殊标志位。

对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“*”。

这是因为请求的首部中携带了 COOKIE 信息,如果 Access-Control-Allow-Origin 的值为“*”,请求将会失败。

Access-Control-Allow-Headers:在跨域访问时,XMLHttpRequest对象的getResponseHeader()方法只能拿到一些最基本的响应头,Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma,如果要访问其他头,则需要服务器设置本响应头。

Access-Control-Expose-Headers 头让服务器把允许浏览器访问的头放入白名单,这样浏览器就能够通过getResponseHeader访问白名单内的响应头了。

ffd59e2f550d24cf1362b6e4659a2e72.png



推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 深入浅出JWT
    JWT(JSONWEBTOKEN)的组成https:jwt.ioheader(头部)承载两部分信息:声明 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • HTMLformwithoutCSRFprotectionHTML表单没有CSRF保护CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是CrossSiteRequestFor ... [详细]
  • v.1.2.beta4Igetthefollowingerrorwhentryingtodeleteauserfromtheadmin ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 这篇文章主要介绍vue中axios请求拦截的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!axios简介axios是一个基于P ... [详细]
  • Odoo接口开发
    Odoo接口开发Odoo是通过Controller来(控制器)发相应的接口的,路由是通过装饰有的方法定义的route()先定义一个Controller类在项目的文件夹control ... [详细]
  • HDIV简介一个简单又强大的安全框架
    为什么80%的码农都做不了架构师?惯例官方纯英文档:https:hdivsecurity.comtechnical-documentationdo ... [详细]
author-avatar
刘诗宪668964
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有