Anda harus mengisolasi masalah dengan terlebih dahulu memverifikasi bahwa titik layanan Anda CORS Diaktifkan. Untuk fokus hanya pada fungsionalitas CORS, saya akan menghapus kode MySQL untuk sementara.
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');
});
Jika server Anda mendengarkan pada port 3300, jalankan perintah PREFLIGHT berikut di 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
Jika permintaan preflight berhasil, respons harus menyertakan Access-Control-Allow-Origin, Access-Control-Allow-Methods, dan Access-Control-Allow-Headers
Sekarang jalankan metode POST.
curl -v \
-H "Origin: https://example.com" \
-H "X-Custom-Header: value" \
-X POST \
http://localhost:3300/cors
Jika permintaan posting berhasil, responsnya harus menyertakanAccess-Control-Allow-Origin
Jika semuanya terlihat baik, server Anda baik-baik saja. Anda kemudian perlu mencoba metode posting dari aplikasi iOS Anda.
CATATAN. Saya juga akan curiga menggunakan cors di localhost. Saya akan memetakan 127.0.0.1 ke domain dan kemudian meminta aplikasi menggunakan domain itu. Jika Anda menggunakan Linux atau Mac, Anda dapat memodifikasi /etc/hosts. Untuk Windows itu c:\windows\system32\drivers\etc\hosts