我有一种情况,我需要运行一些PHP,特别是我需要发送SOAP请求并等待响应,然后对此做一些事情,但有时这些请求可能很慢,最多需要9秒.
现在我真的不希望坐在那里的用户等待9秒才能完成.
基本上用户流程是......
我正在考虑使用Paypal IPN通知运行它,但后来认为它不会在用户返回网站时完成.
所以,我想知道当用户通过Ajax点击第一页并在用户提交付款时运行它时是否可以发出呼叫,当他们返回网站时应该完成 - 这不是如果他们最终没有通过付款,这是一个大问题,所以我不担心在确认付款之前运行此代码.
我的问题是,如果我通过AJAX运行它,如果用户在完成之前离开页面,代码是否仍会被执行?如果不是,任何想法?
有没有理由以下代码片段在IE7中不起作用?
var http = new XMLHttpRequest();
var url = 'http://my_site.com/';
var obj = createJsonParamsObj();
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)
从文档看起来似乎new XMLHttpRequest()应该工作,但有疑虑,因为我无法测试它(仅在兼容模式)所以也许我更好地使用new ActiveXObject.
我的理解是,在Tomcat中,每个请求将占用一个Java /(以及OS)线程.
想象一下,我有一个应用程序有很多长期运行的请求(例如一个有多个玩家的扑克游戏),涉及游戏内聊天和AJAX长轮询等.
有没有办法改变我的webapp的tomcat配置/架构,这样我就不会为每个请求使用一个线程,而是"拦截"请求和响应,以便它们可以作为队列的一部分进行处理?
我的以下问题使用:Java,GWT,jQuery,App Engine(GAE).
关于"Access-Control-Allow-Origin" - 头部有很多问题,但似乎没有什么是我追求的.
我正在尝试使用POST对象将文件上传到Google云端存储.如果我只是使用html表单来实际上传,这可以正常工作.但是,一旦我尝试使用XMLHttpRequest发出完全相同的请求,我就会收到错误"No'Access-Control-Allow-Origin'标头出现在请求的资源上".我已经按照设置CORS进行了斗式导航.我的CORS xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
<Cors>
<Origins>
<Origin>*</Origin>
</Origins>
<Methods>
<Method>GET</Method>
<Method>POST</Method>
<Method>HEAD</Method>
<Method>DELETE</Method>
<Method>OPTIONS</Method>
</Methods>
<ResponseHeaders>
<ResponseHeader>x-goog-meta-foo1</ResponseHeader>
</ResponseHeaders>
<MaxAgeSec>1800</MaxAgeSec>
</Cors>
</CorsConfig>
Run Code Online (Sandbox Code Playgroud)
那我为什么要使用XMLHttpRequest呢?这是因为我希望能够将上传文件上传到Google云端存储(GCS).我不确定我是否在某处犯了一些错误,或者在上传到GCS时甚至可能有上传进度.但据我所知,对此应该没有限制,因为上传进程不是基于与GCS的通信(除了上传速度之外).
我已经强行清理了我的缓存,但这没有用!:(
有什么建议?
谢谢!
gwt google-app-engine xmlhttprequest cors google-cloud-storage
我在这里看到了一些类似问题的帖子,但我似乎无法解决这个问题.基本上,我有一个AJAX文件上传器似乎没有调用progress事件.其他事件启动很好,文件上传完全符合我的预期,但是没有调用progress事件.javascript如下所示:
$('input[name=avatar_upload]').change(function(e) {
// Get the Form
var setupForm = $('#setup-member-form');
// Get the File Array
var file = document.getElementById('avatar-upload').files[0];
// Show the File Upload Progress
$('#avatar-upload-progress').show();
// Create a new Form Data Object
var formData = new FormData();
// Add the File
formData.append('avatar', file);
// Create the AJAX Object
var ajax = new XMLHttpRequest();
// Add the Event Listeners
ajax.addEventListener("loadstart", function(evt) {
// Do something in here...
$('#output').append("upload starting...\n");
}, false);
ajax.addEventListener("progress", function(evt) {
var percentLoaded = (evt.loaded / …Run Code Online (Sandbox Code Playgroud) 是否可以仅从中获取响应头XMLHttpRequest而不下载文件数据?
我真的不懂Access-Control-Allow-Origin和CORS.
如果我允许来自任何域的请求到我的页面,这是否意味着我的页面存在任何安全问题?
我一直认为,SOP确保不能在页面上运行任何脚本,该脚本从另一台服务器请求数据,因为该数据可能是恶意的.但是,由于服务于恶意数据的服务器只能回复包含的标头Access-Control-Allow-Origin:*,所以可以从该服务器加载所有内容.
因此,只要有人设法将一段JS代码注入页面,就可以从属于攻击者的服务器加载每个恶意代码.
Unitl现在我假设,我必须启用跨域请求以允许我的页面上的代码从另一个域请求数据,但它似乎是相反的方式; 另一个域必须允许我的域请求数据.我真的没有看到这个概念的安全性好处.
任何人都可以解释这背后的概念,或者告诉我,如果我弄错了吗?
我使用以下vbscript代码下载网页:
Dim oXML
Set oXML = CreateObject("msxm12.XMLHTTP")
oXML.Open "GET", "mysite.com", False
oXML.Send
Run Code Online (Sandbox Code Playgroud)
如果没有这样的网站,我会报错 80004005, Unspecified error at line "oXML.Open ..."
我该如何处理vbscript中的此错误?我想捕获此错误,并显示msgbox和我的错误,即网页不可用。
我正在尝试抓取以下网页
http://www.bseindia.com/markets/equity/EQReports/StockPrcHistori.aspx?flag=0&expandable=7
在搜索框(它说进入股代名称/代码/ ID) ,在这里我有困难,我可以框的值设置为凭证编号500222通过使用下面的代码,
IE.Document.All.Item("ctl00$ContentPlaceHolder1$GetQuote1_smartSearch").innerText = "500222"
但是,如果您尝试在搜索框中手动输入值500222,则会出现一个下拉框,该框将是相应脚本的名称.但是,我无法通过VBA使其工作.任何帮助都会很棒.
所以我使用普通的javascript(没有jquery),将文件发送到服务器.服务器脚本PHP在结尾处返回状态代码200,但是javascript正在变为readyState == 2.
PHP代码发送回状态代码200:
header('X-PHP-Response-Code: 200', true, 200);
exit;
Run Code Online (Sandbox Code Playgroud)
javascript正在做:
request.onreadystatechange = function() {
if (request.readyState == 4) {
var message;
switch(request.status) {
case '200':
message = "Data uploaded successfully.";
break;
case '406':
message = "Incorrect file format. Please try again.";
break;
case '410':
message = "Unexpected error. Please contact support.";
break;
default:
break;
}
status_message_container.innerHTML = message;
submit_button.disabled = false;
}
else {
alert( "Unexpected error: " + this.statusText + ".\nPlease try again");
}
};
request.send(formData);
Run Code Online (Sandbox Code Playgroud)
甚至知道HTTP 200状态代码在前端正确返回(我得到'OK').JS脚本正在看readyState==2 …
xmlhttprequest ×10
javascript ×5
ajax ×3
cors ×2
php ×2
dom ×1
excel-vba ×1
gwt ×1
http-headers ×1
jquery ×1
long-polling ×1
request ×1
tomcat ×1
vba ×1
vbscript ×1
web-scraping ×1