Доступ к XMLHttpRequest по адресу 'http: // [:: 1]: 3000 / api / requests / ...' из источника 'http://localhost: 4200' заблокирован политикой CORS. - PullRequest
0 голосов
/ 17 июня 2020

У меня есть проект:

  • Back-end использование Loopback 4.
  • Front-end использование Angular.

Около 3 дней a go, работает хорошо. Но теперь это работает. Это изображение ошибки: enter image description here

Я пытаюсь установить cross на сервере:

export async function main(options: ApplicationConfig = {
    rest: {
        cors: {
            origin: '*',
            methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
            preflightContinue: false,
            optionsSuccessStatus: 204,
            maxAge: 86400,
            credentials: true,
        },
    },
}) {
    const app = new ApartmentManagementApplication(options);
...
}

Но все еще не работает, пожалуйста, помогите мне исправить это.

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Если LoopBack 4 был недавно обновлен, то последовательность должна быть обновлена, чтобы принять Express. js промежуточное ПО:

import {inject} from '@loopback/context';
import {
  FindRoute,
  InvokeMethod,
  InvokeMiddleware,
  ParseParams,
  Reject,
  RequestContext,
  RestBindings,
  Send,
  SequenceHandler,
} from '@loopback/rest';

const SequenceActions = RestBindings.SequenceActions;

export class MySequence implements SequenceHandler {
  /**
   * Optional invoker for registered middleware in a chain.
   * To be injected via SequenceActions.INVOKE_MIDDLEWARE.
   */
  @inject(SequenceActions.INVOKE_MIDDLEWARE, {optional: true})
  protected invokeMiddleware: InvokeMiddleware = () => false;

  constructor(
    @inject(SequenceActions.FIND_ROUTE) protected findRoute: FindRoute,
    @inject(SequenceActions.PARSE_PARAMS) protected parseParams: ParseParams,
    @inject(SequenceActions.INVOKE_METHOD) protected invoke: InvokeMethod,
    @inject(SequenceActions.SEND) public send: Send,
    @inject(SequenceActions.REJECT) public reject: Reject,
  ) {}

  async handle(context: RequestContext) {
    try {
      const {request, response} = context;
      const finished = await this.invokeMiddleware(context);
      if (finished) return;
      const route = this.findRoute(request);
      const args = await this.parseParams(request, route);
      const result = await this.invoke(route, args);
      this.send(response, result);
    } catch (err) {
      this.reject(context, err);
    }
  }
}

Дальнейшее чтение

0 голосов
/ 17 июня 2020

Использование прокси в Angular для обхода проблемы CORS.

Вместо отправки запроса из браузера при запуске ng serve вы будете использовать прокси. Он перехватит ваш запрос и отправит его на локальный компьютер (не из вашего браузера).

Проверить Angular .io proxy

...