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

Posted

技术标签:

【中文标题】发布网站后,使用 AngularJS 发布表单返回 405 代码【英文标题】:Posting form with AngularJS returns 405 code, after publishing website 【发布时间】:2018-03-05 11:28:58 【问题描述】:

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

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"

在 localhost 上一切正常,但发布后我在帖子中收到此错误。我的网站发布在 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
            )

任何帮助将不胜感激!

编辑:我添加了响应标头,但没有任何改变

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();
);

【问题讨论】:

【参考方案1】:

问题已解决。

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

【讨论】:

以上是关于发布网站后,使用 AngularJS 发布表单返回 405 代码的主要内容,如果未能解决你的问题,请参考以下文章

使用 URI Intent 打开 App 后,以编程方式填写输入并提交 AngularJS 表单

AngularJS中表单设置有效性的延迟

AngularJS $location 不改变路径

AngularJS:如何解析 302 的响应

将表单数据作为 json 发送到 angularjs 应用程序

AngularJS:POST请求返回302后发送的GET请求用于登录