【发布时间】:2018-12-29 11:18:57
【问题描述】:
我很难解决那个 CORS 问题。
我有一个 javascript 向 Apache/PHP 脚本发送 AJAX Put/Fetch 请求。
在这种情况下,例如,javascript在CodePen上运行, 并且 Apache/PHP 在本地服务器上。
我正在根据允许的主机列表检查来源。
应该可以让 PHP 返回如下标题:
$headers = getallheaders();
if ( checkorigin($headers['Origin']) === false) $headers['Origin'] = null;
header('Access-Control-Allow-Origin: ' . $headers['Origin']);
header('Access-Control-Allow-Methods: PUT, POST');
header('Access-Control-Allow-Headers: content-type');
header('Access-Control-Allow-Credentials: true');
这不起作用。
将https://s.codepen.io 硬编码到标题中确实有效。
有什么想法吗?
解决方案
更改自:
header('Access-Control-Allow-Origin: ' . $headers['Origin']);
到:
header('Access-Control-Allow-Origin: ' . "{$_SERVER['HTTP_ORIGIN']}");
成功了。感谢 Rohit.007
【问题讨论】:
-
试试
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); -
不记得了,但 getallheaders 不是以
HTTP_前缀返回吗?转出$headers看看,还有什么checkorigin? -
@LawrenceCherone getallheaders 返回 ` $headers['Origin'] = s.codepen.io `.
-
@Rohit.007 出于某种原因,这确实有效。谢谢。
-
太好了,我已经把它作为答案发布了。
标签: javascript php ajax apache cors