跨域的基本知识 下面这篇文章写的很全
跨域、简单请求与复杂请求_cors简单请求和复杂请求-CSDN博客
补充:
简单请求
浏览器会对简单请求自动执行跨域请求。这意味着在跨域请求时,浏览器会添加 Origin 头部字段到 HTTP 请求中,并且只有在服务器端返回适当的响应头部字段(例如 Access-Control-Allow-Origin)时,浏览器才会允许该请求。
(如果 响应头 Access-Control-Allow-Origin == 请求头 Origin ) 不跨域
(如果 响应头 Access-Control-Allow-Origin != 请求头 Origin ) 才会出现跨域==》找后端改
因此,简单请求不会产生跨域问题,而不符合条件的请求才会受到浏览器的跨域策略的限制。
也就是说简单请求会自动携带Origin 去服务器,如果服务器设置了Access-Control-Allow-Origin 为请求访问的Origin那么就不会出现跨域
复杂请求
复杂请求的探针不是每次都会出现,探针是有缓存的
探针不会携带真实请求的信息
服务端
第一、设置?Access-Control-Allow-Origin 允许请求的源? 一般是 请求头里的Origin 就是设置为多少
第二、设置Access-Control-Allow-Headers? 这个是定义允许请求头里面允许携带的字段,可以设置 自定义字段、如果Access-Control-Allow-Headers: *? ,允许请求头添加任何自定义标签
第三、服务器必须处理OPTION? 请求探针 ,处理不做任何业务逻辑,直接返回空数据即可,不然浏览器会出现跨域。