当前位置: 首页 > news >正文

苏州建设监督网站首页网站怎么做口碑

苏州建设监督网站首页,网站怎么做口碑,深圳网站建设网站推广方案,网站百度收录很多最近在建设 websocket 长连接网关#xff0c;过程中遇到一件比较奇怪的事情#xff0c;做下简单的记录。需求十分的简单#xff0c;websocket 网关在做权限校验的时候期望复用现有登录逻辑的 jwt-token。如下图所示#xff0c;sso 与 websocket 网关属于不同的二级域名过程中遇到一件比较奇怪的事情做下简单的记录。需求十分的简单websocket 网关在做权限校验的时候期望复用现有登录逻辑的 jwt-token。如下图所示sso 与 websocket 网关属于不同的二级域名登录的 jwt-token cookie 的 domain 设置为 *.xx.com。所以我们的期望是浏览器与 websocket 网关进行 handshark 请求时可以带上 jwt-token cookie。结果自然是不行的服务端并没有收到来自 *.xx.com 的 cookie。于是开始考虑可能和跨域行为有关系。CORSCORS 是一种用于解决跨域的 w3c 标准全称为 跨域资源共享(Cross-origin resource sharing)。它允许浏览器向跨源服务器发出 XMLHttpRequest 请求从而克服了 AJAX 只能同源使用的限制。CORS 基于 http 协议关于跨域方面的规定使用时客户端浏览器直接异步请求被调用端服务端在响应头增加响应的字段告诉浏览器后台允许跨域。概括的说CORS 就是服务端对跨域权限的控制由一组标准的 header 来控制客户端的跨域行为不同浏览器对于 CORS 的实现均有不同。常用的 CORS header 主要有Access-Control-Allow-Origin 指示请求的资源能共享给哪些域可以是具体的域名或者 * 表示所有域。Access-Control-Allow-Credentials 指示当请求的凭证标记为 true 时是否响应该请求。Access-Control-Allow-Headers 用在对预请求的响应中指示实际的请求中可以使用哪些 HTTP 头。Access-Control-Allow-Methods指定对预请求的响应中哪些 HTTP 方法允许访问请求的资源。CORS 处理请求的流程如下判断当前请求是否简单请求。如果不是简单请求则会使用 OPTIONS 方法先发起一个预检请求 (PreFlight)预检请求通过返回的 response 里设置了对应的 header 并匹配上了才会进行下一步具体的请求。预检请求后会发起实际请求但会根据返回的 response header 来决定请求行为例如根据服务端设置的 Access-Control-Allow-Credentials 值来决定请求是否携带当前域的 cookie。这里涉及到的简单请求和非简单请求的概念那么简单请求和非简单请求有什么区别呢若请求满足所有下述条件则该请求可视为简单请求使用了下列 HTTP 方法GET、HEAD、POST。只用了以下 headerAccept、Accept-Language、Content-Language、Content-Type(有额外限制)、DPR、Downlink、Save-Data、Viewport-Width、Width。请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器XMLHttpRequestUpload 对象可以使用 XMLHttpRequest.upload 属性访问。请求中没有使用 ReadableStream 对象。经过一番简单的科普回到我们的问题上来。浏览器对 websocket 的 handshark 请求会不会应用同源策略呢。我们先不回答先来看看如果 CORS 应用在 websocket 上会是什么样的。首先一个 websocket 的握手连接报文大概如下GET / HTTP/1.1Upgrade: websocketConnection: UpgradeHost: ws.xx.comOrigin: http://www.xx.comSec-WebSocket-Key: sB9cRrP/a9NdMgdcy2VJFXSec-WebSocket-Version: 11它和普通 HTTP 请求的区别是多了两行 headerUpgrade: websocketConnection: Upgrade显然它们不属于 CORS 安全的 header 集合自然浏览器会认为这不是一个 简单请求。那么它会按照发起 预检请求随后根据返回的 response header 来判断下一步行为。此处我们希望能带上当前域的 cookie那么按照 CORS 标准我们需要在服务端做一些配置让其支持 CORS 并带上 Access-Control-Allow-Credentials 为 true 的 response header。我们使用的是 Netty 来构建 websocket 网关Netty 支持 CORS 很简单CorsConfig corsConfig  CorsConfigBuilder.forAnyOrigin().allowNullOrigin().allowCredentials().build();pipeline.addLast(new CorsHandler(corsConfig));结果是什么呢我们的 websocket 服务端正确拿到了 *.xx.com 的 cookie并完成了后续鉴权工作。websocket 需要 CORS 么所以真相是什么呢websocket 也需要 CORS 支持来避免跨域问题么google 任何 websocket 与跨域相关的问题都会告诉你websocket 本身就是支持跨域的websocket 本身没有同源策略也就是说在第一幅图中我们应该不作任何事就可以把 xx.com 的 cookie 带到 ws.xx.com 的 websocket 网关上去这似乎和我们实际情况不符。我们使用的是 chrome后来突发奇想试了下 firefox 与 safari结论是这两者不用配置任何 CORS 相关属性就可以把 cookie 带上。难道这是 chrome 的一个 bug? 翻了翻网络找到了一个似乎可以应征的 bug report: Cookies not sent in Websocket handshake with cookies blocked and domain whitelisted (https://bugs.chromium.org/p/chromium/issues/detail?id947413)作者fredalxin来源链接https://fredal.xin/websocket-cors-problem
http://www.yutouwan.com/news/118871/

相关文章:

  • 电子商务网站开发报告数商云公司
  • 如何利用网站模板做网站wordpress主页无法访问
  • 网站开发都用什么语言的wordpress主机
  • iis 发布网站内部服务器错误建e网模型
  • 苏州网站建设书生商友教育直播平台搭建
  • 网站技术策划人员要求宿迁市房地产信息网
  • 公司网站建站流程留学网站模板
  • 最好的网站设计开发公司建设一个网站平台的费用吗
  • 网站如何做图片自动切换西安百度
  • 网站建设与网页设计制作如何获取免费域名
  • 网站生鲜建设市场分析wordpress 帖子付费
  • 悠悠我心的个人网站素材圣弘建设股份有限公司网站
  • 个人网站建设方案书备案网站的后台
  • 网站建设用模板好吗邯郸网站建设服务
  • 温州做网站的公司网站搜索页面设计
  • 哔哩哔哩推广网站discuz论坛seo设置
  • 网页设计网站规划房产网站推广
  • 东台做淘宝网站怎么看网站备案
  • 网站注册搜索引擎的目的网络销售技巧和话术
  • 电子政务和网站建设自评seo优化网站建设哪家好
  • 网站做访问追踪省住房和城乡建设厅
  • 网站开发技术总结报告中国建筑最新消息
  • 衡水手机网站建设价格网站的工作简报怎么做
  • 建设网站一定要电脑吗手机上建设网站
  • 自己创造网站平台发布产品的免费平台有哪些
  • 哪个网站网页做的好看做网站构架用什么软件
  • 网站建设都有哪些方面如何选择邯郸网站制作
  • 做网站赚钱 知乎公司网站建设服务费入什么科目
  • 网站建设的基本元素河北云网站建设
  • 车网站建设策划书专业做效果图公司