快递挂在Chrome后AJAX删除

时间:2014-04-23 14:07:37

标签: javascript jquery ajax express http-delete

当通过jQuery发出同源AJAX删除时,后续通过同一客户端对服务器的调用挂起。我已经摘录了下面的问题。请告知是否存在格式错误,因为这看起来像是一个奇怪的错误。

使用Express 3.5.1,jQuery 1.11.0和Chrome 33.x。

要复制:

  1. 使用以下代码创建目录并安装Express依赖
  2. node main.js
  3. 访问Chrome 33中的localhost:5000
  4. 点击模拟删除链接
  5. 等一下,然后刷新
  6. 在网络区域,Chrome会处理DELETE请求,但后续服务器调用将保持为"待定"。我已经尝试了HTML和JSON数据类型和响应。

    main.js:

    // Dependencies
    var http = require('http'),
        express = require('express');
    
    // Basic app
    var app = express();
    
    // Logging (for debugging), and parsing dependencies
    app.use(express.logger());
    app.use(express.json());
    app.use(express.urlencoded());
    app.use(express.cookieParser());
    app.use(express.methodOverride());
    
    // Simple home page
    app.get("/", function(req, res) {
      var head   = "<head><script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js'></script></head>",
          body   = "<a id='link' style='text-decoration:underline;cursor:pointer;'>Click here to simulate delete</a>, wait a second, then try refreshing.",
          params = {
            url  : "/item/5",
            type : "DELETE"
          }
          ajax = "<script>$(function() { $('#link').click(function() { $.ajax(" + JSON.stringify(params) + "); }); });</script>"
    
      res.send("<html>" + head + "<body>" + body + ajax + "</body></html>");
    
    });
    
    // Simulated deletion
    app.del("/item/:id", function(req, res) {
      res.send(204);
    });
    
    // Make the server listen
    var server = http.createServer(app).listen(5000);
    

1 个答案:

答案 0 :(得分:0)

这最终成为非节点相关的第三方插件(我相信它是Sophos,但我可能会弄错)。插件被禁用后,一切正常。

您可以在此处查看更多信息:https://github.com/strongloop/express/issues/2069