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

如何使用XMLHttpRequest发送POST数据?现有登录代码无法运行该如何解决?

代码不生效问题排查点
  • 移除非法请求头设置
    Host、User-Agent属于W3C规范中明确禁止XMLHttpRequest手动修改的请求头,强行设置会直接抛出请求错误,浏览器会自动生成并携带这两个头,无需手动声明。
  • 检查跨域策略限制
    如果代码运行的页面域名和https://s2.travian.vip不一致,会触发浏览器同源策略拦截。如果是同域运行忽略这条,如果是跨域场景需要目标站点配置CORS规则允许你的域名访问,同时要在open调用之后添加http.withCredentials = true配置,允许跨域请求携带Cookie。
  • 修正请求参数构造方式
    直接拼接字符串的方式容易出现编码错误,建议使用URLSearchParams构造表单参数,避免特殊字符导致的参数解析失败,示例写法:
    const params = new URLSearchParams()
    params.append('name', 'abccc')
    params.append('password', '1111111')
    params.append('s1.x', '61')
    params.append('s1.y', '8')
    http.send(params)
    
  • 补充错误排查逻辑
    原代码只处理了200状态的情况,无法感知其他错误,建议添加日志打印和错误监听,定位具体报错原因:
    http.onreadystatechange = function () {
      console.log('请求状态:', http.readyState, '响应状态码:', http.status, '响应内容:', http.responseText)
      if (http.readyState === 4) {
        http.status === 200 ? alert("oky") : alert(`请求失败,状态码:${http.status}`)
      }
    }
    http.onerror = function (err) {
      console.error('请求抛出错误:', err)
    }
    
  • 确认CSRF校验规则
    绝大多数站点登录接口都有CSRF防护,你需要先请求登录页面获取站点下发的CSRF令牌,将令牌添加到请求参数或者请求头中之后再发送登录请求,否则会被服务端直接拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:02