随身笔记
随身笔记

推荐看php header 跨域

js跨域方式无非就是使用jsonp,这种方法很大众,还有一种方式也可以,那就是在服务器端设置允许任何访问
php中代码为:

根域相同 的情况下,去 请求 不同的子域      例如:v1.a.com 和 v2.a.com的跨域

 

在服务器端添加头部信息

header("Access-Control-Allow-Origin:*");   //可以使用,但是不安全
header( 'Access-Control-Allow-Origin:http://A.abc.com' );  //给指定的域名跨域请求

 

跨过去以后,我还得操作Cookie,所以继续添加头部信息

// 允许携带 用户认证凭据(也就是允许客户端发送的请求携带Cookie)

header( 'Access-Control-Allow-Credentials:true' );

 

 

客服端需要设置JS,需要将 XMLHttpRequest 对象的 withCredentials 属性设置为 true,JQuery1.5.1+ 提供了相应的字段,使用方式如下:

$.ajax({ 
  url:"B. abc.com ", 
  xhrFields:{ 
    withCredentials:true 
  },
  crossDomain:true
});

 

这样,你会在 B 端发现:哦也~ 收到 Cookie 了。

设置 withCredentials 为 true 的请求中会包含 A 端的所有Cookie,这些Cookie仍然遵循同源策略,所以,你只能访问其中和 B 端同根域的Cookie,而无法访问其他域的Cookie。

总结一下就是:

要想跨域,你得有后台(需要服务器端配合)。

BTW:Firefox,发现你和Chrome的表现不一致的情况还真不多。Firefox中不要在同步模式(async:false)下传递Cookie哦~

 

以下demo包演示了跨域的情况下,客户端传值给服务器,同时从服务器请求数据实现了客户端和服务端的跨域双向数据访问

demo下载:http://pan.baidu.com/s/1qXpNXfu

http://share.weiyun.com/615ec54bf7851a0b9770ed5e021b303a

https://sdeno.com/wp-content/uploads/2016/02/php_demo.rar

以上demo参考:http://www.blogjava.net/pengo/archive/2013/01/11/394103.html

http://www.tuicool.com/articles/zEjA7b

 

关于跨域header请看:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

随身笔记

推荐看php header 跨域
js跨域方式无非就是使用jsonp,这种方法很大众,还有一种方式也可以,那就是在服务器端设置允许任何访问 php中代码为: 根域相同 的情况下,去 请求 不同的子域      例如:v1.a.com 和 v…
扫描二维码继续阅读
2016-02-26