Получение 401 несанкционированного - ошибка источника CORS при публикации с использованием HttpClient в Angular5 - PullRequest
0 голосов
/ 20 декабря 2018

Получение приведенной ниже ошибки при попытке опубликовать данные в моей внутренней базе данных Firebase.

Ниже приведены фрагменты кода:

storeUsers(users: any[]){
        return this.http.post('https://promise-90488.firebaseio.com/data.json', users);
    }

appcomponent.ts:

const result = Object.assign({}, this.userForm.value );
console.log(result);
this.userService.storeUsers(result)
      .subscribe(
        (response) => console.log(response),
        (error) => console.log(error)
      );

И сообщения об ошибках приведены ниже:

POST https://promise -90488.firebaseio.com / data.json 401 (неавторизовано) app.component.ts: 37HttpErrorResponse {headers: HttpHeaders, status: 401, statusText: «Unauthorized», url: «https://promise -90488.firebaseio.com / data.json », ok: false,…} ошибка: {error: «Отказано в доступе»} заголовки: HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ} сообщение: «Отказ Http для https://promise -90488.firebaseio.com / data.json : 401 неавторизовано "name:" HttpErrorResponse "ok: false status: 401 statusText:" Unauthorized "url:" https://promise -90488.firebaseio.com / data.json" proto : HttpResponseBase

1 Ответ

0 голосов
/ 20 декабря 2018

Похоже, вы не передаете заголовок авторизации с запросом

const httpOptions = {
  headers: new HttpHeaders({
    'Authorization': 'my-auth-token'
  })
};

return this.http.post('https://promise-90488.firebaseio.com/data.json', users, httpOptions);

Проверьте документы здесь для более подробной информации

Чтобы включить заголовки авторизации со всемипросит вас реализовать перехватчик, чтобы сделать это:

import { AuthService } from '../auth.service';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

  constructor(private auth: AuthService) {}

  intercept(req: HttpRequest<any>, next: HttpHandler) {
    // Get the auth token from the service.
    const authToken = this.auth.getAuthorizationToken();

    // Clone the request and replace the original headers with
    // cloned headers, updated with the authorization.
    const authReq = req.clone({
      headers: req.headers.set('Authorization', authToken)
    });

    // send cloned request with header to the next handler.
    return next.handle(authReq);
  }
}

Подробнее о перехватчиках можно прочитать здесь

...