带有API的CORS问题

带有API的CORS问题,cors,axios,Cors,Axios,我正在运行2个docker容器进行一些本地测试。一个是网站的API。单击,另一个是webplanner。单击:8081 我正在尝试从网站上的端点请求一些数据。单击/api/cache/clear-all,但我收到以下错误: 访问位于的XMLHttpRequest 起源 已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查: 飞行前请求不允许重定向 我使用Axios请求以下数据: window.axios.get('//websites.click/api/cache/clear-all'

我正在运行2个docker容器进行一些本地测试。一个是网站的API。单击,另一个是webplanner。单击:8081

我正在尝试从网站上的端点请求一些数据。单击/api/cache/clear-all,但我收到以下错误:

访问位于的XMLHttpRequest 起源 已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查: 飞行前请求不允许重定向

我使用Axios请求以下数据:

window.axios.get('//websites.click/api/cache/clear-all', {

}).then(response => {
    console.log(response);
})
现在我假设问题在我的htaccess中,因为错误提到飞行前重定向。这是网站中的htaccess。单击/api/

我还将以下内容添加到包含路由的my/api/index.php中

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
编辑1: 通过删除ajax请求中的湿头进行了建议的更改,但仍然得到相同的错误:

Access to XMLHttpRequest at 'http://websites.click/api/cache/clear-all/' from origin 'http://webplanner.click:8081' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
这是XHR选项卡中的请求:


请仔细阅读错误消息:

飞行前请求不允许重定向

因此,服务器上的某些内容导致它以重定向方式响应选项请求

你需要找出原因并阻止它

很有可能是常见的Apache HTTPD从//websites.click/api/cache/clear-all重定向到//websites.click/api/cache/clear-all/,以防您首先需要将JavaScript中的URL更改为正确的URL

而且

“访问控制允许来源”:“*”是一个响应头。如果客户端JavaScript能够设置一个头来为自己提供默认情况下没有的权限,那将是非常愚蠢的。把它扔掉

“内容类型”:“应用程序/json”-您正在发出GET请求。请求正文中没有描述请求类型的内容。摆脱它


…设置非标准标题和将内容类型设置为不在不包含JSON的短列表中的内容类型,这两件事都会首先触发飞行前请求…因此,如果你没有这些废话,你就不会进行飞行前处理,也不会有这个问题。

我已经删除了Axios请求中设置的标题,我已将URL修改为http://websites.click/api/cache/clear-all/ 在其他条件相同的情况下,删除header语句应该会停止预飞行。您确定这是相同的错误而不是不同的CORS相关错误吗?请检查“网络”选项卡。查看重定向的目的地。我确实说过,/只是有可能是不同之处。您需要查看对选项请求的响应,以查看它被重定向到哪里。如果删除将X-request-With:XMLHttpRequest设置为的代码,那么您将没有预飞行。
Access to XMLHttpRequest at 'http://websites.click/api/cache/clear-all/' from origin 'http://webplanner.click:8081' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
Request URL: http://websites.click/api/cache/clear-all/
Accept: application/json, text/plain, */*
Referer: http://webplanner.click:8081/admin/cache
X-Requested-With: XMLHttpRequest
X-Socket-Id: 126436.7368245