我有一个角色1.x应用程序正在对api进行HTTP POST。如果api处理请求的时间超过3-5秒,则Chrome会在第一个请求完成之前提交第二个请求,导致api尝试两次处理相同的请求。
查看chrome dev工具,它只显示一个请求,但wireshark清楚地显示了对同一端点的2个HTTP POST请求。
到目前为止,我还无法找到有关此行为的文档。
是否还有其他人遇到此问题或发现有关如何控制它的任何信息?
编辑以添加代码示例
带有ng-click的HTML
<span><i class="fa fa-refresh" ng-click="reSubmit(transaction.transId)"></i></span>
角度控制器功能
$scope.reSubmit = function(transId) {
RemediationService.reSubmit(transId).then(function(data) {
init();
});
};
角度服务功能
self.reSubmit = function(id) {
return $http.post(API + '/remediation/reSubmit/', {
transId: id
});
};
目前使用测试处理程序服务器端在节点中使用HapiJS通过强制延迟10秒来解决问题。
reSubmit = async function(request, reply) {
console.log('test');
setTimeout(function(){
reply({message:"success"})
}, 10000)
}
执行完所有上述代码后,我们会看到以下内容:
编辑2 - CORS处理
这就是我们目前处理CORS和OPTIONS预检请求的原因:
server.route({
method: 'OPTIONS',
path: '/{p*}',
config: {
handler: function(request, reply) {
var response = reply();
response.headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization';
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS';
return response;
},
cors: true
}
});