跨域详解,跨域谁抛出的?跨域的过程? 如何解决跨域?

    技术2022-07-14  88

    首先跨域的问题是由于浏览器的同源策略导致的,同源策略就是访问请求只能针对

    1、同一个IP 2 、同一个端口 3、同一个协议下的资源。

    如果超出此范围就会出现跨域的错误。

    CORS

    对于跨域的错误,很影响到我们的开发工作。为了解决这个问题,CORS出现了,基本思想就是使用额外的请求头让浏览器和服务器之间经行沟通,从而决定是否接受跨域请求。

    浏览器在跨域访问的时候会自动添加HTTP头信息或者发起预检测请求,对于是否支持跨域请求,关键在于服务器是否做了CORS的配置,允许跨域访问。

    跨域请求分为简单请求和非简单请求。

    简单请求

    请求方法是以下3种之一:

    GETPOSTHEAD

    HTTP头信息不超出以下字段:

    AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:仅限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain

    对于简单请求的跨域处理:浏览器在发送请求的时候会在请求头上面添加一个Origin字段, 包含了要跨域的信息, 服务器在接受到此请求之后,会判断是否能够跨域处理,如果能够处理的话,就会在往浏览器返回带有 Access-Control-Allow-Origin字段 的HTTP响应,否则就不会发送,浏览器也能够判断出不允许跨域,抛出错误。

    非简单请求

    除去简单请求之外的所有请求, 例如 json格式的数据传递。

    此请求对待跨域的处理:浏览器会发起预检查请求,在正式请求之前会发送一个OPTION请求,得到肯定的答复后继续发出XMLhttpRequest请求。

    OPTION请求 : 询问服务器当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP方法和头字段。

    解决跨域

    同过对请求添加额外的HTTP头信息即可。

    1、浏览器配置

    禁用了浏览器的跨域检查,使浏览器不再对比Origin是否被服务器允许,即可发出正常的请求。

    2、服务器配置

    直接配置CORS。spring boot中添加 注解 @CrossOrigin

    针对问题

    1、跨域是客户端抛出的

    2、会发送 OPTION请求。

    Processed: 0.011, SQL: 9