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