У меня есть фронт-проект, использующий angular 7, и другой бэкэнд-проект, использующий пружинную загрузку jhipster
Я использую tomcat 9
Я развертываю два проекта под tomcat 9
Я могу работать с моим приложением, используя @ ip
Я использую эту ссылку http://192.168.0.120/univesity и для API-интерфейса бэкэнда: http:192.168.0.120: 8080 / myapp
теперь у меня есть apache сервер, который взаимодействует с сервером tomcat.
, поэтому приложение будет называться так: http://appuni.edu.com который будет перенаправлять на http://appuni.edu.com/univesity
Я делаю эту конфигурацию в tomcat для перенаправления с http://appuni.edu.com на http://appuni.edu.com/univesity
<Context path="" docBase="univesity">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
, когда я пытаюсь вызвать приложение, используя http://appuni.edu.com/univesity, оно отображает страницу входа
, но у меня есть эта ошибка, когда я пытаюсь войти в систему
Access to XMLHttpRequest at 'http://http:192.168.0.120:8080/myapp/api/account'
from origin 'http://appuni.edu.com'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я пытаюсь со многими решениями без успеха
в проекте Bakend:
Я пытаюсь добавить в UserJWTController class * 10 59 *
@CrossOrigin(origins = "*")
и пытаюсь добавить в метод configure (HttpSecurity http)
antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
и зарабатываю в application.yml
cors:
allowed-origins: "http://appuni.edu.com"
allowed-methods: "*"
allowed-headers: "*"
exposed-headers: "Authorization,Link,X-Total-Count"
allow-credentials: true
max-age: 1800
в переднем проекте:
и пытаюсь сделать в proxy.conf. json
{
"/api": {
"target": "http://appuni.edu.com",
"pathRewrite": {
"^/api": ""
},
"changeOrigin": true,
"logLevel": "debug"
}
}
и я попробуйте сделать этот код в auth-jwt.service.ts
const headers = new HttpHeaders()
.append('Content-Type', 'application/json')
.append('Access-Control-Allow-Headers', 'Content-Type')
.append('Access-Control-Allow-Methods', "GET, POST, DELETE, PUT")
.append('Access-Control-Allow-Origin', '*');
@Injectable({ providedIn: 'root' })
export class AuthServerProvider {
constructor(private http: HttpClient, private $localStorage: LocalStorageService, private $sessionStorage: SessionStorageService) {}
getToken() {
return this.$localStorage.retrieve('authenticationToken') || this.$sessionStorage.retrieve('authenticationToken');
}
login(credentials): Observable<any> {
const data = {
username: credentials.username,
password: credentials.password,
rememberMe: credentials.rememberMe
};
return this.http.post(SERVER_API_URL + 'api/authenticate', data, {'observe': 'response',
'headers':headers}).pipe(map(authenticateSuccess.bind(this)));
function authenticateSuccess(resp) {
const bearerToken = resp.headers.get('Authorization');
console.log('bearerToken:' + bearerToken);
if (bearerToken && bearerToken.slice(0, 7) === 'Bearer ') {
const jwt = bearerToken.slice(7, bearerToken.length);
this.storeAuthenticationToken(jwt, credentials.rememberMe);
return jwt;
}
}
}
Я не знаю, проблема связана с backend или front
, используя @Ip, это работает, но используя http://appuni.edu.com есть проблема
Обновлено:
Я делаю это обновление:
cors:
allowed-origins: "*"
allowed-methods: GET, PUT, POST, DELETE, OPTIONS
allowed-headers: "*"
exposed-headers:
allow-credentials: true
max-age: 1800
и добавляю это строка:
antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
но у меня теперь есть эта ошибка:
POST http:192.168.0.120: 8080 / myapp / api / authenticate 403
this Мой метод настройки:
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)
.exceptionHandling()
.authenticationEntryPoint(problemSupport)
.accessDeniedHandler(problemSupport)
.and()
.headers()
.frameOptions()
.disable()
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/api/register").permitAll()
.antMatchers("/api/activate").permitAll()
.antMatchers("/api/authenticate").permitAll()
.antMatchers("/api/account/reset-password/init").permitAll()
.antMatchers("/api/account/reset-password/finish").permitAll()
.antMatchers("/api/**").authenticated()
.antMatchers("/management/health").permitAll()
.antMatchers("/management/info").permitAll()
.antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.and()
.apply(securityConfigurerAdapter());
}