Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax CORS快把我逼疯了-间歇性问题_Ajax_Node.js_Cors - Fatal编程技术网

Ajax CORS快把我逼疯了-间歇性问题

Ajax CORS快把我逼疯了-间歇性问题,ajax,node.js,cors,Ajax,Node.js,Cors,似乎我已经尝试了所有的方法,最后我改用了: 还有我想使用CORS的一条路线: app.post('/hangouts', cors(), hangoutsController.hangouts); // user CORS 我正在Google Hangouts中实现一个自定义应用程序,但需要发布到我的服务器,并且Hangout是从Google服务器运行的。我将AJAX调用放在一个循环中,以便它继续尝试——这篇文章对我的应用程序至关重要 以下是Hangout应用程序中的相关AJAX调用: var

似乎我已经尝试了所有的方法,最后我改用了:

还有我想使用CORS的一条路线:

app.post('/hangouts', cors(), hangoutsController.hangouts); // user CORS
我正在Google Hangouts中实现一个自定义应用程序,但需要发布到我的服务器,并且Hangout是从Google服务器运行的。我将AJAX调用放在一个循环中,以便它继续尝试——这篇文章对我的应用程序至关重要

以下是Hangout应用程序中的相关AJAX调用:

var shouldpostHangoutId = true;

/* Post the Hangout ID to server */
var postHangoutId = function(hangoutId) {

  var startData = gapi.hangout.getStartData();

  $.ajax({
        type: 'POST',
        url: rootURL + "/hangouts", 
        crossDomain: true,             
        dataType: "json",                 
        data: {
            "hangouts_id" : hangoutId,
            "start_data" : startData
        },

        success: function( response ) {
            console.log( "postHangoutId -- success" ); // server response
            console.log( response ); // server response
            shouldpostHangoutId = false;
        },

        error: function(xhr, textStatus, error){
            console.log( "postHangoutId -- error" ); // server response
            console.log(xhr.statusText);
            console.log(textStatus);
            console.log("error = " + error);

            // Try again
            if (shouldpostHangoutId) {
              postHangoutId(hangoutId); // Try again
            };
        }
    });
};
让我抓狂的是,有时第一次就通过了,有时需要5次。整个过程非常缓慢。这是当它无法通过时我得到的日志:

XMLHttpRequest cannot load https://www.foo.bar/hangouts. No 'Access-Control-Allow-Origin' header
is present on the requested resource. Origin 'https://ts6d5n5om59gt6cin9c39faccjf890k5-a-hangout-
opensocial.googleusercontent.com' is therefore not allowed access.

我在Heroku上使用Node+Express~4

我认为问题与飞行前的请求有关。我将AJAX调用更改为以下内容:

  $.ajax({
    type: 'POST',
    url: rootURL + "/hangouts", 
    dataType: "json",                 
    data: {
        "hangouts_id" : hangoutId,
        "start_data" : startData
    },

    error: function( error ){

        // Log any error.
        console.log( "ERROR:", error );

        // Try again
        if (shouldpostHangoutId) {
          postHangoutId(hangoutId); // Try again
        };

    },
    complete: function(){
       console.log( "postHangoutId -- success" ); // server response
      shouldpostHangoutId = false;
    }
});

这是第一次,没有延误。

在过去的两周里,我一直有类似的问题。肯定是飞行前的请求被用户的浏览器屏蔽了。我最终删除了所有的请求头并起诉了IE8和IE9的xdr。到目前为止,它似乎奏效了。
  $.ajax({
    type: 'POST',
    url: rootURL + "/hangouts", 
    dataType: "json",                 
    data: {
        "hangouts_id" : hangoutId,
        "start_data" : startData
    },

    error: function( error ){

        // Log any error.
        console.log( "ERROR:", error );

        // Try again
        if (shouldpostHangoutId) {
          postHangoutId(hangoutId); // Try again
        };

    },
    complete: function(){
       console.log( "postHangoutId -- success" ); // server response
      shouldpostHangoutId = false;
    }
});