就在我终于理解了Msxml2.XMLHTTP和Msxml2.ServerXMLHTTP之间的区别时
http://support.microsoft.com/kb/290761
XMLHTTP专为客户端应用程序而设计,依赖于基于Microsoft Win32 Internet(WinInet)构建的URLMon.ServerXMLHTTP专为服务器应用程序而设计,依赖于新的HTTP客户端堆栈WinHTTP.ServerXMLHTTP提供可靠性和安全性,并且是服务器安全的.有关更多信息,请参阅MSXML软件开发工具包(SDK)文档.
我突然发现WinHttp.WinHttpRequest ......
http://msdn.microsoft.com/en-us/library/aa382925(VS.85).aspx
Microsoft Windows HTTP服务(WinHTTP)为开发人员提供了HTTP/1.1 Internet协议的服务器支持的高级接口.WinHTTP主要用于与HTTP服务器通信的服务器应用程序,主要用于基于服务器的方案.
那么,这与Msxml2.ServerXMLHTTP有何不同?
(好吧,隐含的问题是我应该使用哪一个...)
xmlhttprequest serverxmlhttp winhttp httpwebrequest winhttprequest
我正在尝试在我的Web应用程序中调试一些棘手的行为:看起来好像客户端正在发送XHR GET请求,但服务器实际上从未接收过它.此外,客户端似乎在看不见的请求中接收重复数据,因为它发送的先前XHR请求.
更令人困惑的是,Firebug将第二个XHR请求标记为Net面板中的浅灰色(这里的请求是从底部开始的第三个,第二个是"GET测试"):

我无法找到任何关于这种着色意味着什么的文件.我想如果我理解这一点,它可能有助于解释这种不寻常的行为.
如果有人有任何见解,如果你能让我知道,我将不胜感激.
我今天用jQuery和AJAX写了一个脚本,我得到了一些错误......
剧本:
function changeAdmin(id) {
$(document).ready(function() {
$('#ta-modarea-'+id).fadeOut('fast');
$('#ta-m-loading-'+id).fadeIn('fast');
$.ajax({
type: 'POST',
url: 'ajax_utf.php?a=changeteamadmin',
dataType: 'json',
data: {
admin : $('#admin-id-'+id).val()
},
success: function(data) {
$('#ta-m-loading-'+id).fadeOut('fast');
$('#ta-modarea-'+id).text(data.msg).fadeIn('fast');
},
error: function(jqXHR, textStatus, errorThrown) {
$('#ta-m-loading-'+id).fadeOut('fast');
$('#ta-modarea-'+id).text('HTTP Error: '+errorThrown+' | Error Message: '+textStatus).fadeIn('fast');
}
});
return false;
});
}
Run Code Online (Sandbox Code Playgroud)
运行后,我收到此错误消息: HTTP Error: SyntaxError: Unexpected token < | Error Message: parsererror
你能帮帮我吗,我该怎么办?
我使用HTML5上传文件.我有一个附加到该功能的按钮单击事件uploadFile().它工作正常.我还有一个单独的按钮来取消上传.我知道我们需要调用xhr.abort()但是如何访问uploadCanceled函数中的xhr对象?我可以使xhr对象全局化,但这不是正确的方法.有人能指导我吗?
function uploadFile(){
var filesToBeUploaded = document.getElementById("fileControl");
var file = filesToBeUploaded.files[0];
var xhr= new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "upload.php", true);
var fd = new FormData();
fd.append("fileToUpload", file);
xhr.send(fd);
}
function uploadCanceled(evt) {
alert("Upload has been cancelled");
}
Run Code Online (Sandbox Code Playgroud)
干杯
有没有办法检查请求是否是Python中的AJAX?
相当于PHP的$_SERVER['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest'?
我想知道你对此有何看法.建议在Web worker中使用同步请求(XMLHttpRequest)?我能找到什么问题?
我一直在我的应用程序中测试这个,我没有发现任何问题.但是由于jQuery和AJAX的旧体验,我害怕这种同步行为.我的应用程序从数据库中的几个表中获取大量数据,这需要一些时间.对于从表中检索到的每一组数据,我需要立即处理它,以免过多地延迟整个过程.同时,用户正在与浏览器进行交互,因此可以阻止它,我认为网络工作者可以正常工作.你认为这是一个很好的解决方案吗?或者我应该尝试使用asynchronus请求?
谢谢.
我有一个webDav CORS插件,我可以在webDav服务器上使用它来POST/PUT/GET/REMOVE/ALLDOCS文件.
我现在想为FTP做同样的事情,但我很难让xmlhttprequest-syntax工作(我只是得到错误0).
Mozilla上的这个页面说它也可以xmlhttprequests用于文件和ftp,但我找不到任何工作示例或教程.
这就是我正在尝试的,它返回 access to restricted URI denied
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("GET", "ftp://<username>:<passeword>@mydomain.de/folder/test.txt", true);
oReq.send();
Run Code Online (Sandbox Code Playgroud)
我还尝试了常规的Ajax请求
$.ajax({
url: "ftp://sharedspace.domain.provider.com/folder/test.txt",
type: "GET",
async: true,
dataType: "text",
crossdomain : true,
headers : {
user: "<username>",
password: "<password>"
},
success: function(e){
console.log("success");
console.log(e);
},
error: function(e){
console.log("error");
console.log(e);
},
});
Run Code Online (Sandbox Code Playgroud)
这也不起作用,返回0状态代码.
问:
什么是正确的语法做跨域XMLHTTPREQUEST的FTP.
谢谢!
编辑:
我发现的唯一有用的链接在这个页面 …
我在页面之间导航时取消XHR请求时遇到问题.我有一个页面,有8个请求被解雇.我点击当前页面外的链接取消它们.页面在等待下一个要加载的文档时停止.他们的XHR请求在开发人员工具中显示为已取消,但新文档暂停,就像它等待它们返回一样.
在这里,您可以看到即使所有其他请求都被取消,页面也会停止.新页面是唯一待处理的请求...

在这里你可以看到,一旦页面最终确实跳转到TTFB是52.52s.如果我等待电话再次点击之前返回,则跳转是即时的.

以下是新页面最终加载时的标题,如果有帮助的话......

我使用以下frankenstein代码来管理XHR请求.我有一个取消所有请求的底部的cancelAll函数...
XHRManager = {
Requests: [],
pendingRequests: [],
addNextRequest: function (r) {
var timeout = 0;
if (trace.isDevelopment()) {
timeout = 350;
}
setTimeout(function () {
if (r.url == XHRManager.pendingRequests[0].url && r.start == XHRManager.pendingRequests[0].start) {
XHRManager.pendingRequests.splice(0, 1);
}
else {
$( XHRManager.pendingRequests).each(function (ii, dd) {
if (dd.url == r.url && dd.start == r.start) {
XHRManager.pendingRequests.splice(ii, 1);
}
});
}
XHRManager.startNextRequest();
if (trace.findLocalStorage()) {
XHRManager.showTrace = true;
trace.show();
}
}, timeout);
},
requests: [],
intervals: [],
requestsInt: …Run Code Online (Sandbox Code Playgroud) 突然间,似乎没有改变我的网络应用程序中的任何内容,我在Chrome中打开它时开始出现CORS错误.我尝试添加Access-Control-Allow-Origin: *标题.然后我收到这个错误:
XMLHttpRequest cannot load http://localhost:9091/sockjs-node/info?t= 1449187563637. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:3010' is therefore not allowed access.
但正如您在下图中看到的那样,没有Access-Control-Allow-Credentials标题.
WTF?Chrome bug?
我的页面被加载,http://localhost:3010该服务器也使用Access-Control-Allow-Origin: *没有问题.如果两个端点都使用它会有问题吗?
我想拦截从我的网页发出的所有http请求,并向请求正文添加一个参数.我的页面包含表单 - 我还想捕获表单提交.我尝试过使用Jquery ajaxSend和Javascript的setRequestHeader,但两者都不适用于我.我该如何实现这一目标?
谢谢
xmlhttprequest ×10
ajax ×6
javascript ×5
cors ×1
cross-domain ×1
firebug ×1
ftp ×1
html5 ×1
http ×1
http-headers ×1
http-proxy ×1
jquery ×1
mysql ×1
parse-error ×1
php ×1
python ×1
web-worker ×1
winhttp ×1