当前位置: 首页 > 面试题库 >

POST AJAX请求被拒绝-CORS?

朱睿
2023-03-14
问题内容

我在端口5000的node.js服务器上设置了CORS,如下所示:

var app = express();

app.use(cors()); //normal CORS
app.options('*', cors()); //preflight

app.post('/connect', function(req, res) { 
    console.log("Connection request received !")
});

var port = 5000;
app.listen(port, function () {
    console.log('Listening on port '+port);
});

我现在正尝试像这样在从硬盘打开的静态网页中使用JQuery发送AJAX POST请求:

var xhr = $.post({
            url: 'http://localhost:5000/connect',
            complete: function() {
                console.log("done !")
            },
            crossDomain: true
        });

xhr.fail(function(xhr, status, error){
    alert(error)
})

complete函数从不调用,并且我得到的唯一警报是来自XHR fail处理程序的警报,其中包含以下错误:

NS_ERROR_DOM_BAD_URI: Access to restricted URI denied

我认为CORS配置合理, 我缺少什么?

编辑 :对于我而言,我能找到的最佳解决方案是从服务器发送页面:

app.use(express.static('web'))

app.get("/", function(req, res) {
    res.sendFile(__dirname + '/web/HTML/index.html');
});

问题答案:

这是我正在使用的代码。它位于我的app.js文件

app.all("/*", function (req, res, next) {

  res.header("Access-Control-Allow-Origin", req.headers.origin);
  res.header("Access-Control-Allow-Credentials",true);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Access-Token,X-Key,Authorization,X-Requested-With,Origin,Access-Control-Allow-Origin,Access-Control-Allow-Credentials');
  if (req.method === 'OPTIONS') {
    res.status(200).end();
  } else {
    next();
  }
});


 类似资料:
  • 我按照这个链接创建我的第一个docker映像,它成功了,现在我正试图从这个链接将这个映像推送到我的docker存储库中。但每当我试图将此图像推入存储库时,就会出现这种类型的错误。 有人能给我一些关于这个问题的提示吗?任何帮助都将不胜感激。 注意:我已成功登录docker

  • 我正在按照这个链接创建我的第一个docker映像,它成功了,现在我正在尝试从这个链接将此映像推送到我的docker存储库中。但是每当我试图将此映像推送到存储库时,我都会遇到此类错误。 注意:我已成功登录docker

  • 我尝试了所有命令来推送我的映像docker集线器,但失败了。每次我都遇到相同的问题 请帮帮我。。。。

  • 我正在使用AWS SAM(Lambda 第三方调用我的API,并在正文中包含JSON的GET请求。但是,当请求发送到带有正文的API时,CloudTop会拒绝该请求。 请求如下: 以下是回应: 检查日志时,请求永远不会命中API网关或Lambda函数。但是,如果我从请求中删除正文,那么它将命中Lambda函数,并且我将从API中获得适当的错误消息(告诉调用方预期的正文丢失)。 我通过SAM模板使用

  • 我试图覆盖Archaius为线程池提供的默认配置(如corepool大小、最大池大小、队列大小等)。但不知何故,它并没有起到作用。下面是我在application.yml文件中的配置。 Hystrix:命令:QueryTimeOutHandler:执行:隔离:线程:TimeOutInMilliseconds:600000线程池:QueryTimeOutHandler:CoreSize:200 Ma

  • 我正在尝试向登录Spotify发送身份验证请求。 这是由javascript XMLHttpRequest通过本地主机运行的。然而,我收到的只是一条错误消息,指出: XMLHttpRequest无法加载https://accounts.spotify.com/authorize/?q=undefined 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许