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

通过REST API创建Confluence页面返回500错误的原因排查求助

问题排查及修复方案

第一类:代码语法/标准不兼容问题

  • Fetch请求体参数错误:你当前代码里用data字段传递请求体是jQuery等类库的写法,原生Fetch API要求使用body字段传递请求内容,且JSON格式的请求体需要先调用JSON.stringify()序列化为字符串,否则服务端接收到非法格式的 payload 会直接抛出500错误。
  • 鉴权头构造不规范:标准Basic Auth的Header值格式为Basic [base64(用户名:密码)],你当前直接写Basic USER:PASS不符合规范,即使GET请求能正常运行,也可能是Confluence对GET/POST请求的鉴权校验逻辑有差异,需要先修正为标准Base64编码格式。
  • 缺CSRF校验头:Confluence Server默认对所有POST请求校验X-Atlassian-Token头,你需要在请求头里新增'X-Atlassian-Token': 'no-check',否则部分版本会直接返回500错误。

第二类:业务参数合法性问题

  • 检查你填写的父页面ID97059352是否真实存在、未被删除
  • 检查空间KeyEXAMPLE_SPACE拼写是否正确,当前鉴权的用户是否拥有该空间的页面创建权限
  • 检查页面标题New Page是否和目标空间下已有的页面重名,Confluence不允许同空间下存在同名页面,部分版本遇到同名创建请求时也会抛出500错误

第三类:调试建议

如果修改后仍报错,可先打印完整响应体查看具体错误信息,Confluence的REST API 500响应一般会附带具体异常堆栈,可直接定位具体错误原因:

fetch(url, options)
.then(res => res.text())
.then(text => console.log('完整响应内容:', text))

修正后的代码示例

function createPage() { 
    let url = "http://exampledomain:8090/confluence/rest/api/content/"
    // 构造标准Basic Auth,注意替换成真实的用户名密码
    const auth = btoa('你的用户名:你的密码')
    fetch(url, {
        method: 'POST',
        headers: {
           'Authorization': `Basic ${auth}`,
           'Content-Type': 'application/json',
           'X-Atlassian-Token': 'no-check'
        },
        // 替换data为body,序列化JSON
        body: JSON.stringify({
            'type': 'page',
            'title': "New Page",
            'ancestors': [{ 'id': 97059352 }],
            'space': { 'key': "EXAMPLE_SPACE" },
            'body': {
                'storage': {
                    'value': "<h1>New Page!</h1>",
                    'representation': 'storage',
                }
            },
        })
    })
     .then(response => response.json().then(data => console.log('创建成功', data)))
     .catch(err => console.log('请求错误', err.message))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:45:03