Chrome 插件无法禁用 CORS 限制,或者我的请求有问题

Posted

技术标签:

【中文标题】Chrome 插件无法禁用 CORS 限制,或者我的请求有问题【英文标题】:Chrome plugin not working to disable CORS restrictions or something is just wrong with my request 【发布时间】:2020-02-18 23:55:25 【问题描述】:

我正在尝试构建一个使用 Jira 服务器 API 的应用。我来自 localhost 的请求被 CORS 策略阻止。

Access to XMLHttpRequest at 'https://jira.company.com/rest/api/2/user?username=myname@company.com' from origin 'http://localhost:4200' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.

我读到Chrome extension 可以通过调整请求标头来规避 CORS 限制。但我似乎没有让它工作。

在图片中,您可以看到我已将扩展名设置为“开启”,但在预检 OPTIONS 请求中该请求仍然失败。 这个请求的问题还在于我在我的标题中将Access-Control-Allow-Credentials 设置为true,但是这个预检请求说它设置为false。这让我觉得我的代码有问题,因为我在发出 API 请求和设置标头等方面也非常缺乏经验。

logIn( email: string, password: string ): Observable<any> 
  const authKey = btoa( `$email:$password` );
  const headers = new HttpHeaders( 
    Authorization: `basic $authKey`,
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Credentials': 'true'
   );
  const params  = new HttpParams().set( 'username', email );
  return this.http.get( 'https://jira.company.com/rest/api/2/user',  headers, params  ).pipe( map( ( user: any ) => 
    if ( user ) 
      localStorage.setItem( 'currentUser', JSON.stringify(  user:  authKey   ) );
    
   ) );

注意:我正在构建一个 Angular 应用程序

谁能告诉我是什么阻止我提出请求?

【问题讨论】:

【参考方案1】:

您不能通过 javascript 设置 CORS 标头。此外,cors 标头必须是响应而不是请求标头。考虑使用 api 代理。 Here 是本地开发的一个例子。

【讨论】:

以上是关于Chrome 插件无法禁用 CORS 限制,或者我的请求有问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Chrome Mac 中禁用 cors

Chrome 的插件 CORS Toggle 无法使用 POST/PUT/DELETE 方法

绕过 chrome 扩展中的 CORS 限制 [重复]

SignalR 2.0 CORS Chrome 禁用 Web 安全奇怪行为

protractor - 启动 chrome 以禁用 cors 的网络安全

在 Android Chrome 上禁用同源策略