跨域问题及解决方案

跨域问题及解决方案

什么是跨域?

跨域就是当请求双方的应用协议(http和https之间)、主机地址(或域名)、端口号其中的一项不一致时,认为他们的域不同。

怎样解决跨域问题?

目前有两种方案:

  1. JSONP 比较老,民间的解决方案,会涉及到大量的编码,对服务端和客户端造成一些侵入式的修改。
  2. CORS 开发简单,官方(w3c)的解决方案。(目前流行的)

CORS 跨域资源共享
跨域问题及解决方案_第1张图片
CODS的请求流程是:
跨域问题及解决方案_第2张图片
两次请求:
第一次是与请求,就像敲门一样去预先请求一次看看是否允许请求。
如果可以那么第二次正式正常的请求。

正式的解决就是在被请求的地方添加允许代码:
在这里插入图片描述
第一行是允许访问的域,谁来请求第二个参数就写谁的这个域,也可以用通配符" * “来代替,表示允许所有的请求。
注意:如果有对cookie的操作的话(如购物车)就需要添加第二行代码,来表示允许操作cookie。但是一旦允许操作cookie那么第一行的第二个参数就不能是” * "了,因为通配符没办法做cookie的操作也就是绑定cookie。

一旦要跨域操作cookie在客户端也需要设置一个对象和其属性为true:
这个的意思是客户端也同意操作cookie。
跨域问题及解决方案_第3张图片

你可能感兴趣的:(跨域问题及解决方案)