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 的插件 CORS Toggle 无法使用 POST/PUT/DELETE 方法
SignalR 2.0 CORS Chrome 禁用 Web 安全奇怪行为