我正在使用来自经典asp页面的Microsoft.XMLHTTP将信息发布到另一个站点......
我希望能够检查fiddler发生了什么,为此我必须找到一种方法来配置Microsoft.XMLHTTP以使用代理...
可能吗?Microsoft.XMLHTTP从哪里获取配置?
非常感谢
现在有可能吗?有没有支持XMLHttpRequest Level 2的浏览器?我测试一下 谢谢.
正如你们中的一些人可能已经知道的那样,Firefox/Chrome中存在一些由XmlHttpRequest对象发起的请求的缓存问题.这些问题意味着浏览器不严格遵循规则,也不会转到服务器获取新的XSLT文件(例如).响应没有Expires标头(出于性能原因我们无法使用它).
Firefox在XHR对象"通道"中有附加参数,您可以将值Component.interfaces.nsIRequest.LOAD_BYPASS_CACHE显式转到服务器.
Chrome存在类似的内容吗?
让我立即停止所有建议添加时间戳作为GET参数值或随机整数的人 - 我不希望服务器获得不同的URL请求.我希望它能获得原始网址.原因是我希望保护服务器免于获得太多不同的简单静态文件请求,并在不需要时向客户端发送过多数据.
如果使用生成的GET参数(如'?forcenew = 12314')命中静态文件,则每次第一次呈现200响应,对于该随机整数值的每个后续请求将呈现304.如果目标静态文件与客户端版本相同,我想发出始终返回304的请求.这就是网络浏览器应该如何开箱即用,但XHR对象往往不会去服务器来询问是否更改了文件.
例如:转到您的Facebook墙,滚动页面末尾,Facebook将异步加载更多墙上的帖子.或者只需点击墙贴中的图像即可.图像对话框(带有注释和更大的图像)也是异步加载的.(您可以使用firebug查看GET请求).
但通过查看和firefox选项卡,您可以看到加载指示器,就像发生回发时一样.
我知道这可以通过使用IFrame和更改其src 来实现.就像iGoogle一样.但我不确定Facebook是否使用IFrame来加载额外的墙贴.还有另一种方法来实现这一目标吗?
更新:通过说"加载指标"我并不是指ajax指标.
正如我所提到的那样,浏览器指示器(显示我们页面是否正在加载的选项卡的左侧一个)更改为加载,就像它是一个回发.
我刚看到有些浏览器会阻止HTTP轮询(我想通过限制请求的速率)......
来自https://github.com/sstrigler/JSJaC:
注意:由于大多数现代浏览器的安全限制阻止HTTP轮询再次可用,因此默认情况下此模块已被禁用.如果你想在使用'make polling'中编译它.
这可以解释我的一些JavaScripts的一些不当行为(有时请求不会被发送或重试,即使它们实际上是成功的).但我无法找到有关细节的更多信息..
谢谢你的帮助...
斯特凡
将产品升级到.NET 4.5后,我们在网站上遇到了一些奇怪的行为.我会尝试尽可能具体,但问题很模糊,所以请耐心等待.此外,对于这种情况,假设没有遵循最佳实践.
用户来到一个页面,该页面以异步方式向Web服务进行多次jquery ajax调用.由于此页面上的设计/编码较差,可能需要永久加载,但它确实提供了用户需要访问的子菜单.页面开始加载后,单击其中一个菜单选项转到另一个页面.到目前为止没什么特别的.
当我们在只安装了.NET 4.0的盒子上使用perfmon时,我们可以看到ASP.NET请求上下移动,正如您所期望的那样:

当我们将它安装在安装了.NET 4.5的盒子上时,我们得到:

执行上述工作流程后,请求挂断.没有排队; 他们只是坐在那里
经过进一步的研究,我们注意到两个不同页面之间的点击不仅仅是一个简单的href,而且实际上是在使用Response.Redirect(url);
此外,这仅在使用IE时发生.使用Firefox和Chrome时,这不是问题.
以下是我们迄今为止所尝试的内容:
同样根据要求,这里是HttpHandler代码:
public class KeepSessionAliveHttpHandler : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
if (context.Session.IsNewSession)
{
string redirectUrl = context.Request.Url.AbsoluteUri.Replace(context.Request.Url.AbsolutePath, VirtualPathUtility.ToAbsolute(Constant.Page_Logout));
context.Response.Clear();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Flush();
context.Response.Write("{\"IsSessionAlive\": \"false\", \"RedirectUrl\": \"" + redirectUrl + "\"}");
}
else
{
context.Session["KeepSessionAlive"] = TimeZoneHelper.GetCurrentUtcDateTime();
context.Response.Clear();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Flush(); …Run Code Online (Sandbox Code Playgroud) 如果我jQuery.ajax()在循环内部调用,是否会导致当前迭代中的调用覆盖最后一次调用,或者为新请求分配了新的XHR对象?
我有一个循环来执行此操作,而从控制台日志我可以看到请求已完成,200 ok但只是循环中最后一个请求的结果数据由请求存储success callback为假设.
代码:
var Ajax = {
pages: {},
current_request: null,
prefetch: function () {
currentPath = location.pathname.substr(1);
if(this.pages[currentPath])
{
var current = this.pages[currentPath];
delete this.pages[currentPath];
current['name']=currentPath;
current['title']=$("title").text().replace(' - '.SITE_NAME, '');
current['meta_description']=$("meta[name=description]").attr('content');
current['meta_keywords']=$("meta[name=keywords]").attr('content');
}
var _Ajax = this;
//the loop in question *****
for(var key in this.pages)
{
$.ajax({
method: 'get',
url:'http://'+location.hostname+'/'+key,
success: function(data) {
_Ajax.pages[key] = data;
}
});
console.debug(this.pages);
}
if(current)
{
this.pages[currentPath] = current;
}
}
};//Ajax Obj
for(var …Run Code Online (Sandbox Code Playgroud) 我正在使用第三方库生成一个原始XMLHttpRequest的new XMLHttpRequest.
这绕过了我的CSRF保护并被我的rails服务器击落.
有没有办法在实例化时将全局添加预定义的CSRF令牌($('meta[name=csrf-token]').attr('content'))添加到所有实例XMLHttpRequest?
今天我遇到了一个有趣的bug,花了很多时间才到达底部.
页面上的表单.在提交时,将捕获数据并new FormData()使用它创建对象.
该对象与脚本一起发送并xhr请求.php,然后脚本返回ok/ error消息.
代码看起来像这样:( 简化版,不需要绒毛)
<form name="frm" id="frm" action="" method="post" onsubmit="save(event, this);" enctype="multipart/form-data">
<input name="name" id="name" type="text" value="..." />
<input name="email" id="email" type="text" value="..." />
<input name="phone" id="phone" type="text" value="..." />
<input name="website" id="website" type="text" value="..." />
<textarea name="details" id="details"></textarea>
<input name="send" type="submit" value="Send" />
</form>
<script type="text/javascript">
function save(e, frm) {
if (document.getElementById('nume').value == '' ||
document.getElementById('email').value == '' ||
document.getElementById('telefon').value == '' ||
document.getElementById('site').value == …Run Code Online (Sandbox Code Playgroud) FF(62)和Chrome(69)考虑http://127.0.0.1一个潜在的值得信赖的 URL.在localhost文章的证书中描述了此行为,详细信息在w3.org站点上提供.
这允许http://127.0.0.1从内部执行XHR请求HTTPS.例如https://something-in-my-network.net,http://127.0.0.1:8080如果有本地服务正在运行,资源上的JS代码可以执行XHR .
但IE(11)禁止这些请求.
可以配置IE以允许XHR http://127.0.0.1从内部HTTPS?
以下代码可用于重现该问题:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://127.0.0.1:8080', true);
Run Code Online (Sandbox Code Playgroud)
IE将立即抛出,Access denied而其他浏览器则不会.