如何从请求中删除授权标头[重复]

Posted

技术标签:

【中文标题】如何从请求中删除授权标头[重复]【英文标题】:How to remove authorization header from request [duplicate] 【发布时间】:2016-12-12 11:51:40 【问题描述】:

我使用MEAN Stack User Registration and Login Example & Tutorial 作为我的应用程序的基础。它为 run 函数中的每个请求添加一个 auth 标头:

$http.defaults.headers.common['Authorization'] = 'Bearer ' + $window.jwtToken;

我想将图像上传到 Cloudinary,但出现此错误:

XMLHttpRequest 无法加载 https://api.cloudinary.com/v1_1/xxxx/upload。预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段授权。

如何专门针对 Cloudinary 的请求删除此标头?

【问题讨论】:

【参考方案1】:

您将需要一个拦截器来检查请求的 url,如果匹配则清除标头。或者,您可以使用$http 配置参数。

使用参数:

$http.post('https://api.cloudinary.com/v1_1/' + someId + '/upload', data,  headers:  );

使用拦截器:

.factory('cloudinaryInterceptor', function() 
 return 
  request: function(config)
   var authHeader = config.headers('authorization');
   //Check for the host
   var regex = /api\.cloudinary\.com/i;
   if(regex.test(config.url))
    //Detach the header
    delete config.headers.authorization;
   return config;
  
 
);

记得在配置阶段推送拦截器

$httpProvider.interceptors.push('cloudinaryInterceptor');

【讨论】:

【参考方案2】:

以前有人问过这个问题。答案可以在here找到。

当您开始使用自定义请求标头时,您将获得 CORS 预检。这是一个使用 HTTP OPTIONS 动词并包含多个标头的请求,其中一个是 Access-Control-Request-Headers,列出了客户端希望在请求中包含的标头。

您需要使用适当的 CORS 回复该 CORS 预检 标题使这项工作。其中之一确实是 访问控制允许标头。该标题需要包含相同的 值包含(或更多)的 Access-Control-Request-Headers 标头。

【讨论】:

以上是关于如何从请求中删除授权标头[重复]的主要内容,如果未能解决你的问题,请参考以下文章

POST请求中缺少授权标头[重复]

如何在所有请求标头中传递授权令牌 - Spring Boot java

如何在传入的http请求标头中添加授权令牌[关闭]

如何从 Vue.js 向 gRpc 标头添加授权

如何在 POSTMAN 环境中添加授权标头?

如何使用授权标头发出 GET CORS 请求