CORS 不允许在 apache 2.41 上发出 PATCH 请求

CORS 不允许在 apache 2.41 上发出 PATCH 请求

我一直在尝试使用 PATCH 来构建 API。由于 CORS,所有请求都失败。我尝试编辑网站的 .htaccess 文件以包含以下内容:

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "PUT, OPTIONS, GET, POST, DELETE"

然而,尽管两个标头都显示为已在请求中发送,但它仍继续说“CORS 预检未成功”。

如果有帮助的话,我正在使用 jQuery 的 ajax 方法来发送请求。

我做错了什么?我该如何解决?

提前致谢,如果这个问题已经得到解答,请见谅。到目前为止,所有答案都不起作用。

答案1

如果将 PATCH 添加到允许的方法列表中,是否有帮助?

Header always set Access-Control-Allow-Methods "PATCH, PUT, OPTIONS, GET, POST, DELETE"

答案2

因此显然,浏览器不喜欢我的服务器返回 200 以外的状态代码,因此导致其 CORS 预检失败。

要解决此问题,您必须确保以 OPTIONS 形式发出的请求始终返回 200 OK,无论如何。浏览器以 OPTIONS 形式发送第一个请求以检查 CORS,然后以 PATCH 形式发送第二个请求。

答案3

我认为如果您能说出您在服务器端使用的是什么平台,那就更容易了。是 apache 还是 nginx 网络服务器?

考虑到 htaccess 信息,我假设您正在使用 apache。您确定服务器有权使用它吗?

您应该检查您的 apache2.conf 或 httpd.conf 并查看类似内容:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All # <---- Allow every command from htaccess
        Require all granted
</Directory>

另外,如果您正在运行 Linux,则应该启用 mod_rewrite,如下所示:

a2enmod rewrite

另外,为了确保万无一失,您的 htaccess 应该以如下内容开头:

RewriteEngine On

请告诉我你使用的技术。我会尽力更好地帮助你。

相关内容