08
2020
11

什么是跨域以及解决方法

#跨域:

# 浏览器从一个域名的网页去请求另一个域名的资源时,浏览器处于安全的考虑,不允许不同源的请求

#同源策略:

#  协议相同

#  域名相同

#  端口相同

#处理方法:

# 1.通过JSONP跨域

# JSON是一种数据交换格式

# JSONP是一种非官方的跨域数据交互协议

# jsonp是包含在函数调用中的json

# script标签不受同源策略的影响,手动创建一个script标签,传递URL,同时传入一个回调函数的名字

# 服务器得到名字后,返回数据时会用这个函数名来包裹住数据,客户端获取到数据之后,立即把script标签删掉

# 2.cors:跨域资源共享

# 使用自定义的HTTP头部允许浏览器和服务器相互通信

# 1.如果是简单请求,直接设置允许访问的域名:

#   允许你的域名来获取我的数据                         

#   response['Access-Control-Allow-Origin'] = "*"

# 2.如果是复杂请求,首先会发送options请求做预检,然后再发送真正的PUT/POST....请求

#   因此如果复杂请求是PUT等请求,则服务端需要设置允许某请求

#   如果复杂请求设置了请求头,则服务端需要设置允许某请求头

#简单请求:

#    一次请求 

#非简单请求:

#    两次请求,在发送数据之前会先发一次请求用于做“预检”,

#    只有“预检”通过后才再发送一次请求用于数据传输。


#只要同时满足以下两大条件,就属于简单请求。                             

# (1) 请求方法是以下三种方法之一:HEAD  GET POST

# (2)HTTP的头信息不超出以下几种字段:                                     

#   Accept                                     

#   Accept-Language                                     

#   Content-Language

#   Last-Event-ID

#  Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、 text/plain 

#JSONP和CORS:

#   1.JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求

#   2.jsonp需要client和server端的相互配合

#   3.cors在client端无需设置,server端需要针对不同的请求,来做head头的处理


 

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。