Trước tiên, bạn cần phải giải quyết vấn đề bằng cách xác minh rằng điểm dịch vụ của bạn là CORS Enabled. Để chỉ tập trung vào chức năng CORS, tôi sẽ tạm thời xóa mã MySQL.
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');
});
Một bạn có máy chủ đang nghe trên cổng 3300, hãy chạy lệnh PREFLIGHT sau đây tại thiết bị đầu cuối.
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
Nếu yêu cầu preflight thành công, phản hồi phải bao gồm Access-Control-Allow-Origin, Access-Control-Allow-Method và Access-Control-Allow-Headers
Bây giờ hãy chạy phương thức POST.
curl -v \
-H "Origin: https://example.com" \
-H "X-Custom-Header: value" \
-X POST \
http://localhost:3300/cors
Nếu yêu cầu đăng thành công, phản hồi sẽ bao gồmAccess-Control-Allow-Origin
Nếu mọi thứ có vẻ ổn, máy chủ của bạn vẫn ổn. Sau đó, bạn cần thử phương pháp đăng từ ứng dụng iOS của mình.
GHI CHÚ. Tôi cũng sẽ nghi ngờ về việc sử dụng cors trên localhost. Tôi sẽ ánh xạ 127.0.0.1 tới một miền và sau đó yêu cầu ứng dụng sử dụng miền đó thay thế. Nếu bạn đang sử dụng Linux hoặc Mac, bạn sửa đổi / etc / hosts. Đối với Windows, đó là c:\ windows \ system32 \ drivers \ etc \ hosts