Javascript Ajax未在同一端口上向本地主机发送请求
我有一个节点(express)服务器运行在Javascript Ajax未在同一端口上向本地主机发送请求,javascript,node.js,ajax,Javascript,Node.js,Ajax,我有一个节点(express)服务器运行在localhost:3000。另一方面,我有一个HTML(client.HTML)文件,它由服务器本身提供服务,路由/client(该文件作为响应发送) 这里我的目标是访问另一个路由,即使用client.html页面上的AJAX调用访问/test(由同一台服务器提供)。然而,从帖子中可以明显看出,它不起作用 不是重复的:到目前为止,我已经尝试了以下帖子中给出的解决方案,但没有成功: • • • 这是我的源代码 server.js const expres
localhost:3000
。另一方面,我有一个HTML(client.HTML
)文件,它由服务器本身提供服务,路由/client
(该文件作为响应发送)
这里我的目标是访问另一个路由,即使用client.html
页面上的AJAX调用访问/test
(由同一台服务器提供)。然而,从帖子中可以明显看出,它不起作用
不是重复的:到目前为止,我已经尝试了以下帖子中给出的解决方案,但没有成功:
••
• 这是我的源代码 server.js
const express = require("express")
const bodyParser = require("body-parser")
var app = express()
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json())
...
app.get('/', (req, res)=>{
res.setHeader('Access-Control-Allow-Origin', '*')
res.send('This server does not support GET requests.')
})
app.post('/test', (req, res)=>{
res.setHeader('Access-Control-Allow-Origin', '*')
res.send("response from /test")
})
var port = 3000
var server = app.listen(port)
client.html
<html>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script>
function init(){
$.ajax({
url: 'http://127.0.0.1:3000/test',
method: 'POST',
contentType: 'application/x-www-form-urlencoded'
}).done((data)=>{
alert(data);
});
}
</script>
<body onload="javascript:init()">
</body>
</html>
函数init(){
$.ajax({
网址:'http://127.0.0.1:3000/test',
方法:“POST”,
contentType:'application/x-www-form-urlencoded'
}).完成((数据)=>{
警报(数据);
});
}
我尝试发送了一个GET
和一个POST
请求,但都没有成功
我以前做过,只是没有使用nodejs
。当我使用requests
库从Python脚本发送请求时,会收到响应,因此服务器似乎工作正常
仅供参考,我在Windows上
问题出在哪里和/或什么地方?我尝试使用您的客户端代码(在添加缺少的jquery导入后),以下代码似乎运行良好(我没有使用express):
我建议在您的终端上运行curl,看看您实际得到了哪些头文件-
curl-I localhost:3000
请在/test
路由中使用控制台.log(req.body)
检查为什么要发送CORS头文件?不需要that@JaromandaX是的,但我在这一点上,我几乎会尝试任何东西…\n你是否尝试过使用res.end()
来表示响应的结束?@JaromandaX是的res.end()
产生了相同的结果。问题在于缺少jquery。我需要一些睡眠。谢谢,帕维尔:-)
const server = http.createServer(function (req, res) {
console.log("logging stuff")
res.setHeader('Access-Control-Allow-Origin', '*')
res.write('This server does not support GET requests.')
res.end();
});