首页 > 代码库 > 跨域请求问题

跨域请求问题

跨域请求,需要提供安全并且服务器认可的信息。

比如: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:bieru52@aliyun.com

本文出自 “追梦” 博客,请务必保留此出处http://dreameng.blog.51cto.com/1187899/1436037