首页 >web前端 >js教程 >为什么我在访问 REST API 时收到'No 'Access-Control-Allow-Origin' Header”错误?

为什么我在访问 REST API 时收到'No 'Access-Control-Allow-Origin' Header”错误?

DDD
DDD原创
2024-12-31 15:53:10254浏览

Why Am I Getting a

响应中没有“Access-Control-Allow-Origin”标头

了解 CORS 和预检请求

跨源资源共享 (CORS)是一种允许浏览器请求访问来自与请求源不同的源的资源的机制。当从不同来源发出请求时,浏览器会向服务器发送预检 OPTIONS 请求,以检查服务器是否允许该请求。

在问题中描述的情况下,浏览器正在发送预检 OPTIONS向 HP ALM REST API 发出请求。但是,服务器未响应必要的 CORS 标头,导致错误“请求的资源上不存在‘Access-Control-Allow-Origin’标头。”

解决问题

有几种方法可以解决这个问题:

使用 CORS代理:

CORS 代理将请求转发到目标服务器,并将必要的 CORS 标头添加到响应中。如果您无法控制目标服务器,这会很方便。

避免预检请求:

要避免预检请求,您可以确保该请求不需要授权或内容类型标头。这可以通过使用替代身份验证方法或将 JSON 数据编码为查询参数来实现。

解决通配符问题:

错误“Access-Control-Allow”当服务器为 Access-Control-Allow-Origin 标头指定通配符('*')而不是请求客户端的特定来源时,会发生“-Origin header must not be the wildcard”。要解决此问题,请配置服务器将 Access-Control-Allow-Origin 标头设置为请求源。

修复 JavaScript 代码

问题中的 JavaScript 代码有一些不正确的标头,正在触发预检请求:

headers.append('Access-Control-Allow-Origin', 'http://localhost:3000');
headers.append('Access-Control-Allow-Credentials', 'true');

删除这些标头,因为它们不应在请求中发送。

以上是为什么我在访问 REST API 时收到'No 'Access-Control-Allow-Origin' Header”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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