Javascript 使用Symfony2的跨域Ajax请求(使用FOSUserBundle的示例)

Javascript 使用Symfony2的跨域Ajax请求(使用FOSUserBundle的示例),javascript,php,ajax,symfony,cross-domain,Javascript,Php,Ajax,Symfony,Cross Domain,我有一个域a“xbo.dev”和一个子域B“blog.xbo.dev” 例如,在B域上,我想向一个域a函数发出一个Ajax请求 我正在用FOSUserBundle身份验证来验证。我所做的: var xhr = new XMLHttpRequest(); if ('withCredentials' in xhr) { xhr.open('POST', 'http://xbo.dev/ajax/check_login_ajax', true);

我有一个域a“xbo.dev”和一个子域B“blog.xbo.dev”

例如,在B域上,我想向一个域a函数发出一个Ajax请求

我正在用FOSUserBundle身份验证来验证。我所做的:

    var xhr = new XMLHttpRequest();

      if ('withCredentials' in xhr) {
          xhr.open('POST', 'http://xbo.dev/ajax/check_login_ajax', true);
          // I am using hard coding for the URL because with Routing.generate I would have this URL : http://blog.xbo.dev/ajax/check_login_ajax
          // which is not good because the request is on a different domain
          xhr.onreadystatechange = function() {
          if (xhr.readyState === 4) {
              if (xhr.status >= 200 && xhr.status < 400) {
                  console.log(xhr);
                  console.log('ok');
              } else {
                  console.log('ko');
              }
          }
      };
      xhr.send(encodeURI('_username=' + $('#co_'+varName+'username').val() + '&_password=' + $('#co_'+varName+'password').val() + '&_remember_me=' + false + '&_csrf_token=' + $('#co__csrf_token').val()));
var xhr=new-XMLHttpRequest();
if(xhr中的('withCredentials')){
xhr.open('POST','http://xbo.dev/ajax/check_login_ajax",对),;
//我对URL使用硬编码,因为使用Routing.generate时,我会有以下URL:http://blog.xbo.dev/ajax/check_login_ajax
//这是不好的,因为请求位于不同的域
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
如果(xhr.status>=200&&xhr.status<400){
console.log(xhr);
console.log('ok');
}否则{
console.log('ko');
}
}
};
send(encodeURI(“'u username='+$”('co#uuu'+varName++'username').val()+'&'u password='+$”('co#uuu'+varName++'password').val()+'&'u memory(u me='+false+'&'u csrf u-token='+$('co#ucsrf-token').val());
我的请求显示了一个“ok”,但没有发生任何特殊情况(我应该有“坏凭证”或“成功”(或其他),由FOSUserBundle check\u login\u ajax函数返回,但没有显示其中任何一个…)

我该怎么办

编辑1:这是我每次的结果,无论登录/密码是否正确

使用普通的$.ajax,我有:


您需要实现一些功能,例如


关于硬编码与使用路由器生成URL的代码说明,请参阅Symfony的路由器。

感谢您的“Symfony的路由器支持主机名”。这可能非常有用。我已经读了无数关于CORS的文章,但问题是每个方法都是不同的,没有人适合我。所以,这就是为什么我在这里问如何以一种简单的方式(使用本机javascript或jquery)做到这一点.你必须做些事情来放松同一原产地政策-CORS只是一个选项。好的,我现在明白了。但是你能给我一个关于Symfony2的CORS有效解决方案吗?我想你应该作为一个单独的问题来问这个问题