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

两个DDEV站点间CORS仍被拦截,请求协助排查问题

解决DDEV环境下跨域AJAX请求的CORS问题
  • 先纠正配置方式:别直接修改nginx-site.conf,DDEV里自定义Nginx规则的标准做法是用.ddev/nginx/custom.conf文件,不用删除#ddev-generated注释,重启服务也不会覆盖自定义配置。

  • 之前的配置不生效,大概率是因为你的请求路径(/actions/login-share/test)被处理PHP的location块接管了,根location /里的add_header规则没被继承;而且默认add_header只在成功响应(200/301这类状态码)里添加,错误响应不会带上CORS头。

  • 给你一个能生效的配置,写入.ddev/nginx/custom.conf即可:

# 处理OPTIONS预请求
if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' 'https://craft-b.ddev.site';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
    add_header 'Access-Control-Max-Age' 3600;
    add_header 'Content-Type' 'text/plain; charset=utf-8';
    add_header 'Content-Length' 0;
    return 204;
}

# 为所有响应添加CORS头(包括错误响应)
add_header 'Access-Control-Allow-Origin' 'https://craft-b.ddev.site' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
  • 操作步骤:

    1. 把之前修改的nginx-site.conf恢复原样(加回#ddev-generated注释)
    2. 在.ddev/nginx目录下创建custom.conf文件,粘贴上面的配置
    3. 运行ddev restart重启服务
    4. 重新测试AJAX请求
  • 排查建议:如果还是报错,打开浏览器开发者工具查看请求的响应头,确认是否存在Access-Control-Allow-Origin;或者用ddev logs -s nginx查看Nginx日志,检查配置是否有语法错误。

内容的提问来源于stack exchange,提问作者Cat Named Dog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:07:27