2016-08-08 19 views
0

ich einige apis in NodeJS ausgesetzt ich in der Lage bin GET-Anforderungen zu erfüllen, aber wenn ich Gesuch versuchen erhalte ich folgende Fehler405: Methode nicht erlaubt Fehler, NodeJS

405: Method not allowed error 
{ 
"code": "MethodNotAllowedError" 
"message": "POST is not allowed" 
} 

Anders als dieses Ich bin nicht in der Lage, irgendwelche Informationen über Fehler zu erhalten. Ich habe versucht, viele Dinge wie unten, aber keiner von ihnen zu arbeiten ..

global.restify = require('restify'); 
global.appRoot = path.resolve(__dirname); 
global.app = restify.createServer({name:'test'}); 
    app.opts(/.*/, function (req,res,next) { 

     // res.header("Access-Control-Allow-Methods", req.header("Access-Control-Request-Method")); 
     // res.header("Access-Control-Allow-Headers", req.header("Access-Control-Request-Headers")); 
    // res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 

     //res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 
     //res.header("Access-Control-Allow-Headers", "X-Requested-With"); 

     res.header("Access-Control-Allow-Origin", "*"); 
      res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
      res.header('Access-Control-Allow-Headers', 'Content-Type'); 
     res.send(200); 

     //res.send(200); 
     return next(); 
    }); 
+1

Was ist 'app.opts()'? Welches Web-Framework verwenden Sie auf dem Server? – robertklep

+0

Ihr Restify-Framework – anand

+0

Können Sie auch die Route anzeigen, an die Sie POST senden möchten? Abgesehen davon (ich glaube nicht, dass es verwandt ist): Ich bin mit Restify nicht allzu vertraut, aber ist "res.send (200)" etwas, das in Middleware funktioniert, von dem es Anfragen an andere Handler weiterleiten soll? – robertklep

Antwort

0

Ich nehme an, dass Sie bereits einen Handler für Ihre POST Anforderungen definiert haben.

Ausgehend von Ihrem Code, nehme ich an, dass Sie CORS unterstützen möchten. Der richtige Weg zu tun, dass in restify would be:

server.use(restify.CORS()); 

oder

server.use(restify.CORS({ 
    origins: ['https://foo.com', 'http://bar.com', 'http://baz.com:8081'], // defaults to ['*'] 
    credentials: true,     // defaults to false 
    headers: ['x-foo']     // sets expose-headers 
})); 

Side Knoten: send Sätze Header und die Reaktion beendet!