http跨域

跨域发生在哪?

发生在浏览器收到返回结果,是浏览器主动拦截的,请求和相应已经发生,但最后被拦截了。

某些get请求可能已经生效,这是一个需要注意的细节。

如何解决

要解决跨域:

  • jsonp。后台接收callback名,返回 callback({}),前端定义function callback(data){}
  • 代理服务器,把请求的结果转发到不跨域的代理服务器,可以在开发时候使用
  • cors。后端设置允许的请求头。

什么是简单请求?
get post head 动作,无自定义请求头,Content-Type是下面之一:

  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/plain

可以添加 Access-Control-Allow-Origin: http:a.com

预检请求怎么办?

判断如果是 options,就添加

1
2
3
Access-Control-Alow-Origin: a.com
Access-Control-Allow-Headers: x-token content-type
access-control-alow-methods: put

如果需要cookie

1
access-control-allow-credentials:true

扫一扫,分享到微信

请我喝杯咖啡吧~