U moet het probleem isoleren door eerst te controleren of uw servicepunt CORS ingeschakeld is. Om me uitsluitend op CORS-functionaliteit te concentreren, zou ik de MySQL-code tijdelijk verwijderen.
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/', function(req, res){
var root = {};
root.status = 'success';
root.method = 'index';
var json = JSON.stringify(root);
res.send(json);
});
app.post('/cors', function(req, res) {
var root = {};
root.status = 'success';
root.method = 'cors';
var json = JSON.stringify(root);
res.send(json);
})
// Start the server
app.listen(3300, () => {
console.log('Listening on port 3300');
});
Als je een server hebt die luistert op poort 3300, voer je het volgende PREFLIGHT-commando uit op de terminal.
curl -v \
-H "Origin: https://example.com" \
-H "Access-Control-Request-Headers: X-Custom-Header" \
-H "Acess-Control-Request-Method: POST" \
-X OPTIONS \
http://localhost:3300
Als het preflight-verzoek succesvol is, moet het antwoord Access-Control-Allow-Origin, Access-Control-Allow-Methods en Access-Control-Allow-Headers bevatten
Voer nu de POST-methode uit.
curl -v \
-H "Origin: https://example.com" \
-H "X-Custom-Header: value" \
-X POST \
http://localhost:3300/cors
Als het postverzoek succesvol is, moet het antwoordAccess-Control-Allow-Origin
. bevattenAls alles er goed uitziet, is je server in orde. U moet dan de postmethode van uw iOS-app proberen.
OPMERKING. Ik zou ook verdacht zijn van het gebruik van cors op localhost. Ik zou 127.0.0.1 aan een domein toewijzen en de app in plaats daarvan dat domein laten gebruiken. Als u Linux of Mac gebruikt, wijzigt u /etc/hosts. Voor Windows is dit c:\windows\system32\drivers\etc\hosts