解决ajax jsonp跨域请求时cookie的问题

我们知道有些场景让我们不得不跨域请求对方的http api .  我们知道ajax不仅仅能访问同域的资源,也是可以跨域请求的,也就是jsonp请求.  

我这边申请一点,本人其实不怎么喜欢使用jsonp,因为对端http api会因为各种情况会出现异常,这些异常丢给后端去做反而更加的合理。  我一般会丢给后端去转发。


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。

http://xiaorui.cc/2016/02/29/%E8%A7%A3%E5%86%B3ajax-jsonp%E8%B7%A8%E5%9F%9F%E8%AF%B7%E6%B1%82%E6%97%B6cookie%E7%9A%84%E9%97%AE%E9%A2%98/

咱们继续说跨域的事情。  jsonp虽然是可以访问外域,但是请求默认不发送cookie信息,如果需要cookie,需要手动指定。

标准的CORS请求不对cookies做任何事情,既不发送也不改变。如果希望改变这一情况,就需要将withCredentials设置为true。


这单单客户端的配置是不行的,服务端在处理这一请求时,也需要将Access-Control-Allow-Credentials设置为true。 

为什么服务端也需要?

如果没有返回Access-Control-Allow-Credentials: true的响应头,那么浏览器将不会把响应结果传递给发出请求的脚步程序,以保证信息的安全。

下面是Jquery ajax携带cookie跨域请求的例子.

Jquery的Ajax请求,设置跨域附带详细参数

我们需要服务端支持相应的header


下面是详细的response头部信息.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">