我已经研究和调试了几个小时但没有运气。此流程/请求在Chrome上运行没问题,但Safari和Firefox都在OPTIONS
预检请求时死亡。 Safari记录两个错误:
(!) Failed to load resource: cancelled
和
(!) XMLHttpRequest cannot load http://{URL_REDACTED}/wp-json/jwt-auth/v1/token/ due to access control checks.
我已经尝试了一堆.htaccess配置,其中包含Access-Control-Allow-Origin
,Access-Control-Allow-Headers
和Access-Control-Allow-Methods
的变体,我无法通过OPTIONS
请求获取Safari。
该应用程序是一个Vue.js前端,使用Axios制作XHR,在REST API上调用了一个WordPress javascript web token(jwt)端点。任何帮助将不胜感激。如果有Auth流程的替代方案,我可以接受建议。使用WordPress,因为它易于安装,而且我已经成为WP开发人员多年。
谢谢!
已更新:
这是我当前的.htaccess文件。我尝试过很多不同的事情。
<IfModule mod_rewrite.c>
RewriteEngine on
Header always set Access-Control-Allow-Origin "http://{LOCAL_DEV_URL}"
Header always set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header always set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
答案 0 :(得分:0)
应使用204 No Content HTTP代码(以及标题)确认预检请求。
尝试在.htaccess
指令下面的Header
添加以下内容:
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=204,L]