javascript - 发布网站后,使用 AngularJS 发布表单返回 405 代码

标签 javascript angularjs post methods http-status-code-405

当我将表单中的数据发布到我收到的服务器时遇到问题:

angular.js:14642 Possibly unhandled rejection: {"data":"<html>\n<head><title>405 Not Allowed</title></head>\n<body bgcolor=\"white\">\n<center><h1>405 Not Allowed</h1></center>\n</body>\n</html>","status":405,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/messages","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"Method Not Allowed"}

在本地主机上一切正常,但发布后我在帖子中收到此错误。我的网站发布在 Github 页面上,域名为 namecheap。

这是我的路线代码:

module.exports = (function() {
'use strict';
var router = require('express').Router();
var Message = require('./angular/models/messageModel');

router.post('/messages', function(req,res,next){
    var message = new Message();                                    
    message.name = req.body.name;
    message.email = req.body.email;
    message.subject = req.body.subject;
    message.message = req.body.message;

    if(req.body.name == null || req.body.name == "" || req.body.email == null || req.body.email == "" || req.body.subject == null || req.body.subject == "" || req.body.message == null || req.body.message == ""){
    res.json({success: false, message: "Please fill up the required fields!" });}
    if(req.body.message.length<8){
            res.json({success: false, message: "Your message is too short!"});

    } else {
        message.save(function(err){
            if(err){
                throw err;
            } else { 
                res.json({success: true, message: "Message sent!"}); 
                }
        });
    }

});

return router;
})();

这是我的要求:

$http({
            method: 'POST',
            url: '/messages',
            headers: { "Content-Type": "application/json" },
            data: app.contactData
            })

如有任何帮助,我们将不胜感激!

编辑:我添加了响应 header ,但没有任何变化

app.use(function (req, res, next) {

res.setHeader('Access-Control-Allow-Origin', 'http://www.stundji.info');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT,');
res.setHeader('Access-Control-Allow-Headers', 'application/json');
res.setHeader('Access-Control-Allow-Credentials', false);
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

next();
});

最佳答案

问题已解决。

问题来自 GitHub Pages。我切换到 Heroku,一切都恢复正常。我给大家的建议是不要将他们的网站托管在 GitHub Pages 上,似乎它对某些请求有限制。

关于javascript - 发布网站后,使用 AngularJS 发布表单返回 405 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389202/

相关文章:

javascript - Angular JS : Pushing objects into an array. 它正在创建一个对象,然后是另一个数组。我需要它来创建单独的对象。这可能吗?

javascript - Angular 2 中的 http 调用结果

angularjs - AngularAMD、动态 UI 路由器、RequireJS - "Error: ' MyDashboardCtrl' 不是函数,未定义”

javascript - Angular Js : how to load table data after clicking a button?

jquery - 通过 jQuery AJAX 请求的 JSON 数据

php - href 超链接为 POST

javascript - PHP 获取唯一标识

javascript - Ajax,JS函数返回未定义的值

javascript - Reactjs,使用map从数组生成JSX元素

jquery - 等待 AJAX 调用 (POST) 完成