问题描述
所以这就是问题所在,我正在尝试使用 angular 应用程序使用 iib Web 服务,我在 angular 上遇到以下错误。 跨域请求被阻止:同源策略不允许读取位于 http://172.20.236.28:7840/username/role 的远程资源。 (原因:CORS 预检响应未成功)。 我在网上用谷歌搜索了这个问题,我把它看作是 cors 问题,我检查了服务器,发现 corsEnabled 是真的,但我仍然失败。
import { Injectable } from '@angular/core';
import { HttpClient,HttpErrorResponse } from '@angular/common/http';
import { throwError,BehaviorSubject,Observable } from 'rxjs';
import { map,catchError } from 'rxjs/operators';
import { User } from '../_class.ts/userinfo';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private currentUserSubject: BehaviorSubject<User>;
public currentUser: {};
errorData: {};
row
url = 'http://172.20.236.28:7840/username/role';
constructor(private http: HttpClient) {
}
redirectUrl: string;
public get currentUserValue(): User {
return this.currentUserSubject.value;
}
login(username,password): Observable<User> {
const obj = {
username: username,password: password
};
return this.http.post<any>(this.url,obj)
.pipe(map(user => {this.row = user
if (user && user.Token) {
localStorage.setItem('currentUser',JSON.stringify(user));
}
return user;
}),catchError(this.handleError)
)
}
getUsername() {
return JSON.parse(localStorage.getItem('currentUser'));
}
isLoggedIn() {
if (localStorage.getItem('currentUser')) {
return true;
}
return false;
}
getAuthorizationToken() {
const currentUser = JSON.parse(localStorage.getItem('currentUser'));
return currentUser.Token;
}
getToken(){
return localStorage.getItem('token');
}
logout() {
localStorage.removeItem('token');
}
handleError(error: HttpErrorResponse) {
let errorMessage = '';
if (error.error instanceof ErrorEvent) {
errorMessage = `Error: ${error.error.message}`;
// A client-side or network error occurred. Handle it accordingly.
//console.error('An error occurred:',error.error.message);
} else {
errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
errorMessage = `Error Code: ${error.statusText}\nMessage: ${error.message}`;
// The backend returned an unsuccessful response code.
// The response body may contain clues as to what went wrong.
//console.error(`Backend returned code ${error.status},` + `body was: ${error.error}`);
}
window.alert(errorMessage);
return throwError(errorMessage);
// return an observable with a user-facing error message
this.errorData = {
errorTitle: 'Oops! Request for document Failed',errorDesc: 'Something bad happened. Please try again later.'
};
return throwError(this.errorData);
}
}
iib 属性
HTTPConnector
name='HTTPConnector'
type='Policy'
AutoRespondToHTTPHEADRequests='false'
CORSAllowCredentials='false'
CORSAllowHeaders='Accept,Accept-Language,Content-Language,Content-Type,Access-Control-Allow-Origin,Origin,X-Requested-With,Authorization,Token'
CORSAllowMethods='GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS'
CORSAllowOrigins='*'
CORSEnabled='true'
CORSExposeHeaders='Content-Type,Accept,Token'
CORSMaxAge='-1'
ConnBacklog='100'
EnableLookups='true'
IWATimeout='300'
IntegratedWindowsAuthentication=''
ListenerAddress='0.0.0.0'
ListenerPort='7840'
ListenerThreads='-1'
MaxConnections='-1'
MaxKeepAliveRequests='-1'
MaxPostSize='-1'
QueueCapacity='1000'
ServerName=''
TimeoutSweepInterval='20'
active
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)