gpt4 book ai didi

javascript - 设置 Access-Control-Allow-Origin 不适用于 AJAX/Node.js

转载 作者:行者123 更新时间:2023-11-30 00:29:15 24 4
gpt4 key购买 nike

我一遍又一遍地面对同样的错误:

XMLHttpRequest cannot load http://localhost:3000/form. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 404.

我已经阅读了无数与此类似的帖子,它们几乎都有相同的答案,即添加以下设置:res.setHeader('Access-Control-Allow-Origin', '*' )。这就是我一直在做的,但它仍然不起作用。我在 localhost:8000 上提供了一个 angular.js 应用程序(当单击 btn 时调用 logsth()),我的 Node 在 localhost:3000 上运行。它们的外观如下:

app.controller('Contact', ['$scope', function($scope) {
$scope.logsth = function(){
var datas = {'may':'4','june':'17'};
$.ajax({
url: 'http://localhost:3000/form',
method: 'POST',
crossDomain: true,
data: datas
});
};
}]);

还有我的 Node :

var express = require('express');
var router = express.Router();
var app = express();

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});

app.post('/form', function(req, res){
console.log("e-mail sent");
res.send('yey');
});

module.exports = router;

这里没有太多代码,但现在我只想消除错误。

编辑:当我使用 app.use(...) 和 app.post(...) 并转到 localhost:3000/form 时,我收到 404 错误。但是当我使用 router.use(...) 和 router.post(...) 至少链接工作正常。此外,没有“允许来源”错误,但我确实得到:POST http://localhost:3000/form 404 (Not Found)。然而,当我去 http://localhost:3000/form它显示响应和 console.log。我应该将其保留为路由器而不是应用程序吗?

最佳答案

只留下这一行对我来说就成功了:

res.setHeader('Access-Control-Allow-Origin', '*');

更新:

您可以尝试安装cors 模块from npm .

关于javascript - 设置 Access-Control-Allow-Origin 不适用于 AJAX/Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com