开发者社区 问答 正文

H5+做的移动APP如何连接位于虚拟服务器web网站

移动APP连接后台PHP时,提示PHP只能本地访问,但已经在PHP的页头添加了: header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Headers: Origin,X-Requested-With, Content-Type, Accept"); header('Access-Control-Allow-Methods:GET,POST,PUT'); 请问什么地方需要设置一下才行?

展开
收起
1917512217735902 2020-05-24 22:04:40 963 分享 版权
阿里云 AI 助理回答

在移动APP连接后台PHP时遇到“PHP只能本地访问”的提示,尽管您已经在PHP文件的页头添加了CORS(跨源资源共享)相关的HTTP头部信息,但问题可能还出在其他几个方面。请检查以下设置或潜在问题:

  1. 服务器配置:确保您的服务器配置(如Apache、Nginx等)允许跨域请求。这些服务器可能会有自己的访问控制规则,需要手动配置以允许跨域。例如,在Nginx中,您可能需要在配置文件中的location块添加如下内容:

    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT';
    add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept';
    
  2. PHP运行环境限制:如果使用的是某些云服务或者特定的PHP框架,可能存在额外的安全策略或中间件阻止了外部访问。检查是否有防火墙规则、安全组设置或云服务商提供的安全服务(如阿里云WAF、安全组设置等)限制了访问。

  3. PHP代码逻辑:确认在发送响应之前没有其他的PHP代码逻辑阻止了非本地访问。比如,有无检查$_SERVER['REMOTE_ADDR']来限制访问来源的代码。

  4. 缓存问题:有时候浏览器或CDN缓存可能导致即使修改了CORS设置也看不到效果。尝试清空浏览器缓存,或如果您使用了CDN服务,确保CDN的缓存规则正确,并刷新CDN缓存。

  5. 精确错误信息:查看更详细的错误日志,这将帮助定位问题所在。PHP的错误日志、Web服务器的日志以及任何应用框架的日志都可能包含有关为何请求被拒绝的更多信息。

  6. 验证请求头:确保APP端发送的请求头与您在PHP中允许的请求头一致。例如,如果APP端发送了一个不在Access-Control-Allow-Headers列表中的自定义请求头,也会导致跨域问题。

如果以上步骤都无法解决问题,建议详细检查服务器和应用程序日志,同时考虑是否有特定时间段内更改了服务器或网络配置,这可能是问题的线索。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答