【问题标题】:ajax request gives a 404 with express server (chrome) loads successfully with firefox without a server?ajax 请求在没有服务器的情况下使用 Firefox 成功加载快速服务器(chrome)的 404?
【发布时间】:2017-01-09 23:50:06
【问题描述】:

我正在尝试从我的索引视图发出 ajax 请求。 .

├── app.js
|
├── package.json
├── ajax
│   ├──ajax.txt
|   
├── home.ejs
  • 服务器只是呈现主页
app.set('views' , './'); app.set('视图引擎' , 'ejs'); app.get('/' , function(req , res){ res.render('01'); });

-ajax 脚本可以在没有服务器的情况下在 Firefox 中正常加载。 - 制作一个快递服务器,它会给出 404

GET http://localhost:3000/ajax/ajax.txt 404 (Not Found)
  • home simple 在按钮被点击时发出一个请求。
var loadAjax = document.getElementsByTagName('button')[0]; loadAjax.addEventListener('click' , function(e){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = 函数(){ if((xhr.readyState == 4) && (xhr.status == 200 || xhr.status == 304)){ var rText = document.createTextNode(xhr.responseText); var p = document.createElement('p'); p.appendChild(rText); document.body.appendChild(p); } }; xhr.open('GET' , 'ajax/ajax.txt' , true); xhr.send(null);

【问题讨论】:

    标签: ajax node.js express


    【解决方案1】:

    从您显示的 Express 代码中,没有响应 http://localhost:3000/ajax/ajax.txt 请求的路由处理程序。

    默认情况下,快速 Web 服务器不提供任何文件。因此,它只提供您已为其创建显式路由处理程序或您已配置某种中间件以自动方式提供一个或多个静态文件的文件。因此,与其他一些 Web 服务器不同,Express 不仅仅在您的服务器文件系统中查找匹配文件以发送回请求客户端。如果没有明确设计用于处理该特定请求的路由或中间件,则会收到 404。

    您可以使用app.use(express.static(...)) 为 Express 配置一些静态文件处理。例如,您可以将其配置为自动提供静态和公共文件的整个目录。例如,这通常用于提供 .css 和 .js 文件,这些文件通常是静态文件。

    例如,仅处理您的 /ajax/ajax.txt 请求的简单 Express 路由如下所示:

    app.get("/ajax/ajax.txt", function(req, res) {
        res.sendFile("ajax/ajax.txt");
    });
    

    根据您还想对静态文件做什么,您还可以使用express.static() 中间件来配置一个或多个静态文件以由您的 Express 服务器自动提供服务。请参阅the doc 了解各种选项和使用方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 2021-02-28
      • 2019-06-26
      • 2015-03-22
      • 2014-06-20
      相关资源
      最近更新 更多