javascript - 为访问者清除 X-CSRF-TOKEN 以修复 XMLHttpRequest 被 CORS 策略阻止
问题描述
我刚刚将网站从一台主机切换到另一台主机,由于某种原因,我们在尝试访问第三方 API 时遇到以下多个错误
Access to XMLHttpRequest at 'https://externalwebsite.com/api/' from origin 'https://www.mainwebsite.com.au' has been blocked by CORS policy: Request header field x-xsrf-token is not allowed by Access-Control-Allow-Headers in preflight response.
.htaccess 文件具有允许这些连接的 CORS 策略:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
我可以看到旧主机设置了以下 cookie,当我在系统上删除它们时,它允许网站正常工作:
XSRF-TOKEN
1551054855|ZxDIR_16hNnw
.www.mainwebsite.com
hs
1333923782
.www.mainwebsite.com
svSession
253f275579e7747b6495ca6ff45ba024da3bd3b36906f5ac14b709de48792403faf1d3bbff2205d92d2e9a8de90d4b101e60994d53964e647acf411e4f798bcd4c6094311de4bdfbf81f1c6cdfaa3e9de1f5fc736f232b0c584f30f1f7d232d9
.www.mainwebsite.com
我如何包含一些 PHP 或 Javascript 来为加载网站的任何人清除这些 cookie,以便为过去访问过该网站的人正常加载?
解决方案
如果你能给我更多关于你的前端框架的信息,我会更清楚地解释它。
可能的解决方案:在页面加载时添加脚本以删除 cookie
$(window).load(function() {
$.cookies.del('name_of_your_cookie');
});
这将删除 cookie 现在只需添加一个读取 cookie 命令和一个条件,以检查 cookie 是否旧且需要删除。
您可以使用document.cookie
来读取 cookie 并解析以检查键值。
如有任何疑问,请联系我 :)
推荐阅读
- c# - 不包含“GetAwaiter”的定义,并且没有可访问的扩展方法“GetAwaiter”接受“List”类型的第一个参数
- animation - JavaFX如何在单独的类中使用AnimationTimer?
- flutter - Flutter:仅验证一个 TextFormField
- c++ - C++:constexpr 斐波那契数列求值
- python - 使用 Cronjob (crontab) 运行 PySpark 不起作用
- reactjs - 使用钩子响应一个接一个发生的 CSS 动画
- python - 模块“scipy”没有属性“规范”
- netsuite - 在套件脚本 2.0 中调用 search.load 时出现意外错误
- c++ - mallopt() 还会控制 C++ 原生“新”的行为吗?
- ios - iOS:在应用内购买产品后会显示默认提醒