Express CORS работает на других конечных точках, кроме одного - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть простой проект Express в качестве конечной точки API, использующий cors в качестве промежуточного программного обеспечения.

Cors работает на любой другой конечной точке, кроме одной.Вот мой снимок кода:

const express = require('express');
var cors = require('cors');
const app = express();

app.use(cors());

app.get('/shuttles',
    tokenPassport.authenticate('bearer', { session: false }),
    (req, res) => {
        // ....
        // implementation goes here...
        // ....
})

app.get('/deposit',
    tokenPassport.authenticate('bearer', { session: false }),
    (req, res) => {
        // ....
        // implementation goes here...
        // ....
})

CORS в /deposit работает, но не с /shuttles.

Примечание: не обращайте внимания на tokenPassport.Это для авторизации.

РЕДАКТИРОВАТЬ

Вот снимок вкладки сети в Chrome Devtool.Это только отправка OPTIONS запроса, и это заголовок ответа.Нет Access-Control-Allow-Origin заголовка в ответе.

snapshot

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

вы можете создать свое собственное промежуточное ПО в файле app.js или server.js.

//CORS
app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Accept,Authorization');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});

, если хотите использовать модуль cros

const corsOptions = {
    "origin": "*",
    "methods": "GET, HEAD, PUT, PATCH, POST, DELETE",
    // other options
}

app.use(cors(corsOptions));
0 голосов
/ 04 декабря 2018

После некоторой медитации, находящей решение во вселенной, мое приложение Express размещено в Google App Engine, и я понял, что мое dispatch.yaml содержит

- url: "*/shuttles*"
  service: shuttle

Это источник проблемы.Просто переделайте маршрутное такси и маршрут, чтобы решить: D

Спасибо за все ваши комментарии, все в порядке.

0 голосов
/ 26 ноября 2018

Привет, можешь попробовать добавить эту строку на экспресс-сервере app.options('*', cors());.также вы можете проверить, добавляете ли вы из клиентского приложения при вызове конечной точки /shuttles заголовок 'access-control-originins' к *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...