Ajax CORS快把我逼疯了-间歇性问题
似乎我已经尝试了所有的方法,最后我改用了: 还有我想使用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
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;
}
});