首页  >  文章  >  web前端  >  为什么在 Angular 中使用 POST 请求发送文件时,“Access-Control-Allow-Headers”中不允许我的“Access-Control-Allow-Origin”标头?

为什么在 Angular 中使用 POST 请求发送文件时,“Access-Control-Allow-Headers”中不允许我的“Access-Control-Allow-Origin”标头?

Susan Sarandon
Susan Sarandon原创
2024-10-28 07:36:29634浏览

Why is my

问题:带标头的跨源请求错误

尝试使用 POST 请求发送文件时,开发人员可能会遇到错误,表明Access-Control-Allow-Headers 响应标头不允许特定的请求标头。

为了解决此问题,开发人员在请求中添加了以下标头:

"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"

但是,这导致了一个新错误,指出“Access-Control-Allow-Headers”标头不允许“Access-Control-Allow-Origin”标头。

解决方案:标头限制和默认内容类型

对于跨域请求,如果内容类型未设置为以下三种特定类型之一,浏览器将发送预检选项请求:“application/x-www-form-urlencoded” 、“multipart/form-data”或“text/plain”。

默认情况下,Angular 将内容类型设置为“application/json”,这不是跨域请求可接受的类型之一。这会触发预检 OPTIONS 请求,但由于“Access-Control-Allow-Headers”标头的限制,该请求被拒绝。

要解决此问题,开发人员可以覆盖 Angular 中的默认内容类型或允许服务器端使用“Access-Control-Allow-Headers”标头。

覆盖默认标头的 Angular 示例:

$http.post(url, data, {
    headers : {
        'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
    }
});

以上是为什么在 Angular 中使用 POST 请求发送文件时,“Access-Control-Allow-Headers”中不允许我的“Access-Control-Allow-Origin”标头?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn