ajax 请求在没有服务器的情况下使用 Firefox 成功加载快速服务器(chrome)的 404?

Posted

技术标签:

【中文标题】ajax 请求在没有服务器的情况下使用 Firefox 成功加载快速服务器(chrome)的 404?【英文标题】:ajax request gives a 404 with express server (chrome) loads successfully with firefox without a server? 【发布时间】: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);

【问题讨论】:

【参考方案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 了解各种选项和使用方法。

【讨论】:

以上是关于ajax 请求在没有服务器的情况下使用 Firefox 成功加载快速服务器(chrome)的 404?的主要内容,如果未能解决你的问题,请参考以下文章

有没有方法可以使得前一个ajax请求没有处理完毕前,下一个ajax请求先等待?

如何在没有新请求的情况下修改 ajax src 属性?

是否可以在不使用ajax请求的情况下检查用户是否在线?

AJAX 功能在没有警报的情况下不起作用

在没有 ajax 的情况下更新数据或在网络选项卡中记录请求 - Websockets

GMail Chat 如何能够在没有客户端交互的情况下发出 AJAX 请求?