【问题标题】:Apache / PHP and dynamic CORSApache / PHP 和动态 CORS
【发布时间】: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


【解决方案1】:

试试

header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");

【讨论】:

  • 是的。你明白了:)
猜你喜欢
  • 2015-04-17
  • 2019-02-18
  • 2012-08-22
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2018-02-11
  • 2010-12-20
  • 2021-11-26
相关资源
最近更新 更多