进行 API 调用时出现 CORS 和 Preflight 问题

进行 API 调用时出现 CORS 和 Preflight 问题

我的软件有一些 CORS 和预检问题,我无法解决。为了测试它,我使用了一个 cors 测试站点来模拟它。当我向我的服务器应用程序发出 api 请求时,我收到以下错误:

Access to XMLHttpRequest at 'https://example.org/api/articles/2387' from origin 'https://www.test-cors.org' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

我在 .htaccess 文件末尾添加了以下代码,但仍然出现相同的错误:

<IfModule mod_headers.c>
Header append X-Frame-Options SAMEORIGIN
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Header always set Access-Control-Allow-Headers "*, Authorization, authorization"
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
# always return 200 for preflight OPTIONS requests
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

服务器还返回“状态代码:401 未授权”。作为请求标头,我添加了一个授权标头(示例字符串):

Authorization: Basic DJFNCNDJKS7574hdfnDDBHr4593834nfnd=

但这是正确的授权,因为我在本地使用 curl 测试了完全相同的标头几次(没有跨源),并且始终能获得请求的数据。您知道这里发生了什么吗?我该如何解决?

编辑:我让它工作了。我首先将附加的 htaccess 内容放在文件末尾。由于我将其添加到文件开头,因此它工作正常。

相关内容