CORS 错误:修改允许的标头
尝试执行文件上传的 POST 请求时,浏览器经常会遇到错误:“Request Access-Control-Allow-Headers 不允许 header 字段 Content-Type。"
根本原因:
出现此错误是因为浏览器预检跨源请求通过发送 OPTIONS 请求来请求具有非标准内容类型(例如“multipart/form-data”)的请求。 OPTIONS 请求检查服务器是否允许标准 HTTP 集中未包含的特定请求标头。
初步尝试的解决方案:
为了解决此问题,开发人员最初尝试将以下标头添加到 POST 请求中:
"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- Access-Control-Allow-Headers 不允许 Control-Allow-Origin。”
解决方案:
出现此问题是因为服务器必须允许“Content-在“Access-Control-Allow-Headers”配置中键入“标头”。浏览器发送带有“Content-Type”标头的预检 OPTIONS 请求,如果服务器不允许,CORS 请求将失败。
要解决此错误,开发人员应该覆盖 Angular 的默认“应用程序” /json”内容类型或在服务器的 Access-Control-Allow-Headers 配置中允许“Content-Type”。
Angular 代码示例:
覆盖默认值Angular 中的 header,可以使用以下代码:
<code class="typescript">$http.post(url, data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } });</code>
以上是CORS 错误:为什么我的服务器拒绝预检请求中的'Content-Type”?的详细内容。更多信息请关注PHP中文网其他相关文章!