debeka debeka - 1 year ago 134
Node.js Question

POST request not allowed - 405 Not Allowed - nginx, even with headers included

I have a problem in trying to do a POST request in my application and I searched a lot, but I did not find the solution.

So, I have a nodeJS application and a website, and I am trying to do a POST request using a form from this site, but I always end up in this:

enter image description here

and in the console I see :

Uncaught TypeError: Cannot read property 'value' of null
Post " " not allowed

that is in this line of code :


<form id="add_Emails" method ="POST" action="">

<textarea rows="5" cols="50" name="email">Put the emails here...

<INPUT type="submit" onclick="sendInvitation()" name='sendInvitationButton' value ='Send Invitation'/>


<script src="scripts/file.js"></script>


function sendInvitation(){

var teammateEmail= document.getElementById("email").value;

I read many post and a documentation of cross domain but it did not work.
research source 1:
research source 2:

What I am doing now:

I am trying to POST from a different domain of my server :

POST REQUEST : , github repository

POST LISTENER : " , server localhost ( x-> my ip address)

So, I had the same problem in other files, but I fixed it putting this code in the begginning of each route:

var express = require('express');
var sha1 = require('sha1');

var router = express.Router();
var sessionOBJ = require('./session');

var teams = {}
var teamPlayers = []

router.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT, GET,POST");

and I fixed it doing it.

Now, I am having the same problem, but in this file the only difference is that I deal with SMTP and emails, so I post an email and send an Email to this email I received in the POST request.

THe code is working totally fine with POSTMAN, so, when I test with POSTMAN it works and I can post.

I included this code below instead of the first one I showed but it did not work as well:

router.all('*', function(req, res, next){
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
res.header("Access-Control-Allow-Headers", "Origin, Content-Type, Accept")
res.header("Access-Control-Max-Age", "1728000")

Does someone know how to solve it?

Thank you.

Answer Source

This configuration to your nginx.conf should help you.

server {
    listen       80;
    server_name  localhost;

    location / {
        root   html;
        index  index.html index.htm;

    error_page  404     /404.html;
    error_page  403     /403.html;

    # To allow POST on static pages
    error_page  405     =200 $uri;

    # ...