跨域问题
首先有一个前提,跨域问题只会出现在浏览器。那什么是跨域,这里涉及到浏览器的一个规范”同源策略”,通过浏览器发送的请求,只要协议、ip、端口一致,则为同源,反之其中一项不满足则不是同源,也就是跨域了。跨域并不是说请求没有发送到服务器端,请求发送了,但是浏览器的同源策略对这个请求的返回做了限制。
那么通常如何处理跨域:
1、前端使用jsonp
2、cors(跨域资源共享):添加请求头参数access-control-allow-origin: 允许访问的域名
-
涉及到的请求头有
Access-Control-Allow-Origin : 该字段必须的,表示接受该值对应的域名的请求 Access-Control-Allow-Credentials : 该值是一个布尔值,表示是否允许发送 Cookie Access-Control-Expose-Headers : 该字段可选。 CORS 请求时, XMLHttpRequest 对象的getResponseHeader() 字段只能拿到6个基本字段: Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma 。如果想要拿到这6个值之外的值,就必须在 Access-Control-Expose-Headers 指定
-
简单请求和复杂请求
简单请求:
- 请求方式为 HEAD、GET、POST 这三种方式之一
- HTTP头信息中开发者添加的信息不超过以下几种:
- Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type : 只限于三个值 : application/x-www-form-urlencode、multipart/form-data、text/plain
凡是不同时满足上述两个条件的,就属于复杂请求。浏览器对两种请求的处理方式也是不一样的
复杂请求:
非简单请求是那种对服务器有特殊要求的请求,比如请求方式是 PUT、DELETE,或者 Content-Type 字段类型是 application/json
简单请求请求头会有一个Origin字段带上请求源,复杂请求会先发送一个预检请求,确认是否可以访问,再发送真正的请求
- 可以通过拦截器限制访问的域名,并设置请求头来实现
3、方法或者类名标记注解@crossorigin,原理和cors差不多,都是控制请求头
> 参考文章:https://zhuanlan.zhihu.com/p/66789473
博主真是太厉害了!!!
不错不错,我喜欢看
看的我热血沸腾啊https://www.ea55.com/
你的文章让我感受到了无尽的欢乐,谢谢分享。 http://www.55baobei.com/ERFpXLpX8z.html
你的才华横溢,让人敬佩。 https://www.4006400989.com/qyvideo/47880.html
每次看到你的文章,我都觉得时间过得好快。 https://www.4006400989.com/qyvideo/81588.html
每次看到你的文章,我都觉得时间过得好快。 https://www.4006400989.com/qyvideo/81588.html
你的文章让我学到了很多知识,非常感谢。 https://www.yonboz.com/video/82404.html
你的才华让人惊叹,请继续保持。 http://www.55baobei.com/RImwz3WqZ3.html
《诈欺游戏》日本剧高清在线免费观看:https://www.jgz518.com/xingkong/18543.html