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

标签 javascript ajax node.js

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

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/

相关文章:

javascript - JS根据屏幕尺寸更改链接

javascript - addEventListener 不适用于基于 IE 11 的客户端基础应用程序

javascript - 在移动网络浏览器上自动显示软键盘

php - nginx - 某些 ajax 请求的 502 Bad Gateway

node.js - 使用 Joi 验证嵌套对象

javascript - 在 javascript 中 bool 比较与精确匹配搜索之间进行搜索的更快方法

php - 如何创建 JSON (jQuery),发布整个数组

javascript - Ajax 成功后重新执行 Javascript

javascript - Keen.io JS api 响应 {"code": "UnknownError"} when event created OK

javascript - 什么时候应该将包保存为const?