微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

同源策略不允许在 iib 应用程序和 angular 读取远程资源

如何解决同源策略不允许在 iib 应用程序和 angular 读取远程资源

所以这就是问题所在,我正在尝试使用 angular 应用程序使用 iib Web 服务,我在 angular 上遇到以下错误。 跨域请求被阻止:同源策略不允许读取位于 http://172.20.236.28:7840/username/role 的远程资源。 (原因:CORS 预检响应未成功)。 我在网上用谷歌搜索了这个问题,我把它看作是 cors 问题,我检查了服务器,发现 corsEnabled 是真的,但我仍然失败。

下面是调用服务的Angular代码

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 举报,一经查实,本站将立刻删除。