Я пытаюсь вызвать свой API в Jazz с помощью Vue.js и Axios, но получаю следующую ошибку:
Доступ к XMLHttpRequest в 'https://jazz.api.com/api/extra_stuff _here' from origin 'http://localhost' заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin.
Я искал другие решения, такие как https://enable-cors.org/server_expressjs.html или добавление
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Allow-Credentials": "true"
к моему коду, и он все еще не работал. Даже если я использую подстановочный знак для Access-Control-Allow-Origin, я все равно получаю проблему CORS и не могу вызвать свой API. Я использую Vue и Typescript на стороне клиента, и мне удалось заставить Express работать на моей стороне сервера. Вот фрагмент кода моего вызова API Axios:
return Axios.post('https://jazz.api.com/api/extra_stuff_here', context.getters.getRequest,
{
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Allow-Credentials": "true"
}
}
)
Здесь я вызываю свой API в этом файле TypeScript, а вот мой server.js:
var express = require('express');
var path = require('path');
var cors = require('cors');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var app = express();
app.use(morgan('dev'));
app.use(cors());
app.use(bodyParser.json());
var publicRoot = './dist';
//app.use(express.static(path.join(__dirname, '/dist')));
app.use(express.static(publicRoot));
app.get('/', function (req, res) {
res.sendFile("index.html", { root: publicRoot });
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Authorization");
res.header("Content-Type", "application/json");
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
res.header("Access-Control-Allow-Credentials", "true");
next();
});
app.listen(process.env.PORT || 80, function() {
console.log("listening on port 80");
});
Независимо от того, что я делаю, я не могу понять эту проблему CORS. Прежде чем я добавил экспресс в свое приложение, у меня все еще была та же проблема, я думал, что, возможно, экспресс на стороне сервера решит проблему CORS. Однако это не помогло. Раньше я запускал свое приложение Vue, выполняя npm run serve. Но любая помощь была бы замечательной! Может быть, это проблема с Jazz?