как подключиться с Angular к Java сервлету?
вот мой угловой сервисный код
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
@Injectable({ providedIn: "root" })
export class UploadService {
url: string;
constructor(private http: HttpClient) {
this.url = "http://localhost:8081/ServletSample/";
}
uploadFile(data): Observable<any> {
return this.http.post(this.url, data);
}
sendData(data): Observable<any> {
return this.http.post(this.url + "DataServlet", data);
}
}
ниже Аутсервис
import { Injectable } from "@angular/core";
import { HttpEvent, HttpHandler, HttpInterceptor } from "@angular/common/http";
import { HttpRequest } from "@angular/common/http";
import { Observable } from "rxjs";
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
const clonedRequest = req.clone({
headers: req.headers.set("X-CustomAuthHeader", "aaaa")
});
console.log("req", req);
console.log("new headers", clonedRequest.headers.keys());
return next.handle(clonedRequest);
}
}
Java-сервлет работает под портом
http://localhost:8081/ServletSample/DataServlet
ниже код Java-сервлета
package com.test.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DataServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 548987777;
public DataServlet() {
super();
System.out.println("DataServlet constructor called");
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
System.out.println("DataServlet \"Init\" method called"+ config.toString());
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
System.out.println("DataServlet \"Destroy\" method called");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{
System.out.println("DataServlet doGet method called"+ request);
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("DataServlet doPost method called");
}
}
но когда я отправляю запрос, в браузере появляется ошибка ниже
Доступ к XMLHttpRequest в «http://localhost:8081/ServletSample/DataServlet' от источника» http://localhost:4201' был заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control Заголовок -Allow-Origin 'присутствует в запрашиваемом ресурсе.