跨域请求,需要提供安全并且服务器认可的信息。
比如:A域名下的数据需要请求B域名下的一个方法,需要进行验证,或者可能需要获取B域名下cookie的某一个值,那么需要进行跨域请求。
如果我们使用普通的Ajax的json格式来进行请求,则会出现
XMLHttpRequest cannot load http://zhl.study.com/cross-domain.php. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost‘ is therefore not allowed access.
的错误,那么需要在服务器上加上:(背景是***的代码)
server
{
listen 80;
server_name zhl.study.com;
index index.html index.php;
root /var/www/study;
error_log logs/study_error.log debug;
access_log /var/log/nginx/www_access.log wwwlogs;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .*\.(php|php5)?$
{
add_header ‘Access-Control-Allow-Origin‘ ‘http://localhost‘;
add_header ‘Access-Control-Allow-Credentials‘ ‘true‘;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_intercept_errors on;
include fcgi.conf;
#log_by_lua_file conf/lua/stats/record.lua;
}
}
如果使用JSONP的方式则不需要添加上述***的代码区域
$.ajax({
url: ‘http://zhl.study.com/diff_domain.php‘,
type: "GET",
dataType: ‘jsonp‘,
jsonp:‘callback‘,
timeout: 5000,
success: function (data) {
alert(data.name);
},
error: function(data){
}
})
在B域名下设置cookie,返回之中带有cookie的数据,即可。
如果在A下设置cookies,需要到B域名下获取cookie,然后进行验证,此方法目前未能继续实现(A与B域名毫无关系,如果是一级和二级域名关系的除外),如果你已经实现此方法可以给我联系。Email:[email protected]