使用CORS解决跨域问题

使用CORS解决跨域问题,第1张

CORS

CORS全称为 Cross-Origin Resource Sharing;被译为跨域资源共享,新增了一组>

跨域资源共享机制的工作原理主要应用于三个场景:

1简单请求

请求满足所有下述条件,则该请求可视为“简单请求”。

使用下列请求方法之一: GET、HEAD 或 POST

不得人为设置下列集合之外的其他首部字段: Accept、 Accept-Language、 Content-LanguageContent-Type。

Content-Type 的值仅限于下列三者之-: text/plain、multipart/form-data、application/x->

2预检请求

当请求满足下述任一条件时,即应首先发送预检请求:

使用下列请求方法之一:PUT、DELETE、CONNECT、OPTIONS、TRACE 或 PATH

请求头中包含自定义头部字段

服务器发送了 application/json 格式的数据

在浏览器与服务器正式请求之前,浏览器会先发送 OPTION 请求进行预检,以获知服务器是否允许该实际请求,所以这一次的 OPTION 请求称为“预检请求”。服务器成功响应预检请求后,才会发送真正的请求,并且携带真实数据。

3认证请求

CORS具有一个有趣的特性是,可以基于 >

xml>

将XML>

如果服务器端的响应中未携带 Access-Control-Allow-Credentials: true,浏览器将不会把响应内容返回给请求的发送者。

跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。即JavaScript只能访问和 *** 作自己域下的资源,不能访问和 *** 作其他域下的资源。

注意:localhost和127001也属于跨域。

如果Origin指定的源不在许可范围内, 服务器会返回一个不带有Access-Control-Allow-Origin字段的响应 浏览器解析时发现缺少了这个字段, 就会报错

修改Django中的viewspy文件修改viewspy中对应API的实现函数,给返回值加上响应头Access-Control-Allow-Origin,允许其他域通过Ajax请求数据:

满足以下两个条件的请求。

(1) 请求方法是以下三种方法之一:

(2) >是否是跨域请求呢?
在网上找到了相关资料( >1、CORS的原理:CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。
2、tomcat如何配置cors的跨域请求:
在tomcat中,有一个和cors相关的拦截器:CORS Filter
该过滤器可以通过添加必需的访问控制请求头Access-Control-对象来进行跨域。同时还可以对一些请求进行拦截。如果请求是无效的,或者是不被允许的,该请求被拒绝或者禁止。

场景:前后端分离,页面和后端项目部署在不同服务器,出现请求跨域问题。

原因:CORS:跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 >

如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的

举个例子:

下表给出了相对 >        为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下, 不能读写对方资源这叫做同源, 同源策略是浏览器的安全基石

        如果一个请求地址里面协议, 域名和端口号都相同,就属于同源

        在同源策略下,非同源的网站之间发送AJAX请求,如有需要,可通过降域或其他技术实现

     cors(Crosss-OriginResource Sharing) ,CORS可以在不破坏既有规则的情况下,通过后端服务器实现

CORS接口, 从而实现跨域通行,CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持

       21: 简单请求

           在CROS之前, 发送>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13455265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-10
下一篇 2023-08-10

发表评论

登录后才能评论

评论列表(0条)

保存