Sie müssen das Problem isolieren, indem Sie zunächst überprüfen, ob Ihr Servicepunkt CORS-fähig ist. Um mich ausschließlich auf die CORS-Funktionalität zu konzentrieren, würde ich den MySQL-Code vorübergehend entfernen.
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');
});
Wenn Ihr Server Port 3300 überwacht, führen Sie den folgenden PREFLIGHT-Befehl am Terminal aus.
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
Wenn die Preflight-Anfrage erfolgreich ist, sollte die Antwort Access-Control-Allow-Origin, Access-Control-Allow-Methods und Access-Control-Allow-Headers
enthaltenFühren Sie nun die POST-Methode aus.
curl -v \
-H "Origin: https://example.com" \
-H "X-Custom-Header: value" \
-X POST \
http://localhost:3300/cors
Wenn die Post-Anforderung erfolgreich ist, sollte die Antwort Access-Control-Allow-Origin
enthaltenWenn alles gut aussieht, ist Ihr Server in Ordnung. Sie müssen dann die Post-Methode von Ihrer iOS-App aus ausprobieren.
HINWEIS. Ich wäre auch misstrauisch bei der Verwendung von cors auf localhost. Ich würde 127.0.0.1 einer Domäne zuordnen und die App stattdessen diese Domäne verwenden lassen. Wenn Sie Linux oder Mac verwenden, ändern Sie /etc/hosts. Für Windows ist es c:\windows\system32\drivers\etc\hosts