似乎我已经尝试了所有内容,最后我转而使用CORS npm module:
var cors = require('cors');
我的一条路线我想使用CORS:
app.post('/hangouts', cors(), hangoutsController.hangouts); // user CORS
我正在Google环聊中实施自定义应用,但需要发布到我的服务器,并且环聊是从Google服务器运行的。我将AJAX调用放在一个循环上,以便它继续尝试 - 这篇文章对我的应用程序至关重要。
以下是环聊应用中的相关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。
答案 0 :(得分:0)
我认为问题与飞行前请求有关。我将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;
}
});
它是第一次没有延迟直接通过。