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:
and in the console I see :
Uncaught TypeError: Cannot read property 'value' of null Post "http://name.github.io/APP-example/file.html " not allowed
that is in this line of code :
file.html:
<form id="add_Emails" method ="POST" action=""> <textarea rows="5" cols="50" name="email">Put the emails here... </textarea> <p> <INPUT type="submit" onclick="sendInvitation()" name='sendInvitationButton' value ='Send Invitation'/> </p> </form> <script src="scripts/file.js"></script>
file.js:
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:http://enable-cors.org/server.html research source 2: http://www.w3.org/TR/2013/CR-cors-20130129/#http-access-control-max-age
What I am doing now:
I am trying to POST from a different domain of my server :
POST REQUEST : http://name.github.io/APP-example/file.html , github repository
POST LISTENER : "http://xxx.xxx.x.xx:9000/email , 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"); next(); });
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") next(); });
Does someone know how to solve it?
Thank you.
The HyperText Transfer Protocol (HTTP) 405 Method Not Allowed response status code indicates that the server knows the request method, but the target resource doesn't support this method.
By default, the configuration file is named nginx. conf and placed in the directory /usr/local/nginx/conf , /etc/nginx , or /usr/local/etc/nginx .
Every NGINX configuration file will be found in the /etc/nginx/ directory, with the main configuration file located in /etc/nginx/nginx.
This configuration to your nginx.conf should help you.
https://gist.github.com/baskaran-md/e46cc25ccfac83f153bb
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; # ... }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With