调用JavaScript API出现406(Not Acceptable)错误,求解决方案
解决Fetch POST请求返回406(Not Acceptable)错误的方案
针对你用Fetch API发送POST请求遇到的406错误,结合你的代码和Drupal 9服务器的响应信息,给出以下排查和解决方向:
检查Drupal端点的预期Accept格式:Drupal的API端点(比如REST资源)对
Accept头通常有严格要求,哪怕你加了*/*,服务器端的路由或资源配置可能只接受特定媒体类型,比如Drupal REST默认常用application/vnd.drupal-jsonapi+json这类格式,而非通用的application/json。调整请求头的Accept字段:
尝试替换Accept头为Drupal适配的格式:'Accept': 'application/vnd.drupal-jsonapi+json'若为自定义端点,也可尝试只保留
application/json,避免多余类型导致服务器匹配混乱:'Accept': 'application/json'验证Content-Type与后端兼容性:
你当前用的Content-Type是application/json,需确认Drupal的目标端点是否接受JSON请求体。如果是Drupal表单提交类端点,可能需要改用application/x-www-form-urlencoded格式,同时修改请求体编码方式:headers: { 'Accept': 'text/html, */*', 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams(data).toString()查看Drupal后台日志定位问题:
Drupal会在后台日志(路径/admin/reports/dblog)中记录406错误的具体原因,比如哪个资源无法匹配Accept头、请求参数是否合规等,这能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者Diamoniner12345
相关产品推荐
相关产品推荐

