跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
捷比信电阻高精密 · 大功率无感 · 金属膜电阻

跨域原因和解决方案

#为什么存在跨域问题浏览器限制,当前所有浏览器都实施同源策略规范。请求方法的类型为xhr。如果不是xhr(例如json,script),则不会存在跨域问题。请求者和服务器具有不同的来源,即跨域,包括:当同时满足三个条件时,可能会发生不同的协议,不同的域名,不同的端口和跨域问题。 #解决方案针对浏览器限制的解决方案-关闭浏览器的同源策略检查--args--disable-web-security--user-data-dir设置浏览器的启动参数,并设置浏览器的同源策略取消。该方法需要所使用的用户手动操作,这绝对是不现实的。请求方法类型为xhr的解决方案由于只有类型xhr的请求可以具有跨域请求,我们可以更改请求方法吗? Jsonp的实现就是这样。将原始类型为xhr的请求伪装到脚本请求中。 Jsonp请求路径将自动带来回调参数,服务器可以根据此参数确定它是否为jsonp请求,并以脚本形式封装返回值。并且服务器需要相应地进行更改。对于SpringBoot项目@ControllerAdvice公共类JsonpAdvice扩展了AbstractJsonpResponseBodyAdvice {public JsonpAdvice {super(“ callback”)); //常规jsonp请求参数}} JSONp的JQuery实现的原理:动态创建一个脚本,将Go传递给该脚本进行请求,在请求之后,该脚本被销毁。可以通过中断jQuery进行验证。 (您可以看到JQuery在网页的源代码中嵌入了一个临时脚本。当Jsonp请求完成时,该脚本将被销毁。)缺点:服务器需要更改,仅支持GET方法(因为该脚本是(在GET方法中获得的,前端指定了request方法。它也是无效的,并且由GET方法发起的请求)3.对于不同的域解决方案,被调用方确定使用哪种方法来解析返回的响应头,其中包含允许根据实际系统架构进行跨域访问的信息。要求被叫方更改代码。 (可以通过特定的应用程序添加它以允许跨域信息,或者可以通过容器,Tomcat,码头等添加它。)通过过滤器,可以在nginx或apache转发服务器上配置允许跨域请求的信息。 。 2.呼叫者解决了呼叫者和接收者之间的问题。向呼叫者添加另一层,该层将呼叫者的请求转发给被呼叫者。第一点是,因为调用方和转发层位于同一域名下,所以不会出现跨域问题。第二点是,由于它不是浏览器发起的请求,因此当转发层调用被调用方时,就不会出现跨域问题(请参阅跨域的三个元素)。简单请求和非简单请求当浏览器启动跨域请求时,它将首先确定它是简单请求还是非简单请求。对于简单的请求,浏览器将首先请求,然后在得到结果后判断它是否是跨域的。对于非简单请求,浏览器将首先启动预检查选项请求,然后在通过检查后再启动实际请求。对于带有Cookie的跨域请求,必须将allowedOrigins设置为特定来源,而不是*。需要设置响应参数allowCredentials(true),以允许带有cookie的跨域cookie推荐高质量的内容共享体系结构+算法。如果您没有关注,则可以长按以关注它:长按以订阅更多精彩内容▼如果是,请单击以观看,真诚的感谢