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

已配置所需请求头的本地文件CORS请求被阻,游戏调用proxy.php无响应

问题排查与解决方案

一、请求未到达服务器(日志无记录的核心原因)

直接访问有日志但游戏调用无日志,说明请求根本没发送到proxy.php,或被服务商拦截:

  • freehosting.com的跨站/恶意请求拦截:免费主机通常会拦截非浏览器直接发起的请求(比如游戏客户端的请求)。可在游戏请求头中添加模拟浏览器的User-Agent:
    // 游戏端请求示例(JS)
    fetch('https://www.domain.com/proxy.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
      },
      body: JSON.stringify({prompt: "test"})
    })
    
  • 游戏端请求路径错误:检查游戏内请求URL是否拼写正确(如漏写https、域名错误),本地测试时浏览器CORS策略可能直接阻止请求发送,导致日志无记录。
  • OPTIONS预请求被服务器前置拦截:免费主机可能通过.htaccess或服务器配置在PHP脚本执行前拦截OPTIONS请求,导致预请求失败、浏览器终止后续POST请求。可在根目录创建.htaccess添加全局CORS配置:
    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
    Header always set Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"
    
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} OPTIONS
    RewriteRule ^(.*)$ $1 [R=204,L]
    

二、CORS头配置的潜在问题

  • 头重复设置:OPTIONS分支重复设置Access-Control-Allow-Origin: *虽无影响,但建议统一在脚本顶部设置,避免后续输出导致头发送失败(直接访问有日志说明此情况暂不存在)。
  • 缺失凭证允许头:若游戏请求带withCredentials: true,需添加header("Access-Control-Allow-Credentials: true");,同时Access-Control-Allow-Origin不能用*,需指定游戏具体域名。

三、免费主机的其他限制

  • curl功能限制:虽直接访问能执行curl,但游戏端请求可能因来源或频率被主机禁用curl。可在脚本中添加var_dump(function_exists('curl_init'));确认可用性。
  • 请求大小限制:若游戏发送的请求体过大,免费主机可能直接拦截,导致日志无记录。建议先发送最小请求体测试。

四、游戏端调试建议

  • 查看浏览器网络面板:网页游戏可打开F12的Network面板,查看请求状态码(如403、404)及响应错误信息,明确拦截原因。
  • 抓包工具分析:用Charles或Fiddler抓取游戏端请求,确认请求是否发送、请求头/体是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:22:14