【问题标题】:PHP Access-Control-Allow-Origin not workingPHP访问控制允许来源不起作用
【发布时间】:2015-02-17 18:15:07
【问题描述】:

我有一个子域“x.domain.com”,然后从静态文件子域“y.domain.com”调用文件。

在我的配置文件中:

require_once("/var/_BACKEND$/functions/cors.php");

这包括文件罚款。 “cors.php”的内容是这个问题的答案中包含的代码: CORS with php headers(我已经尝试搜索过这个问题!!)

在配置文件的底部我也有代码:

if(!function_exists('cors')) die("err"); else cors();

现在由于某种原因,尽管代码与上面完全相同,并且文件包括正常,但我仍然从浏览器收到以下错误:

XMLHttpRequest 无法加载 http://y.domain.com/scripts/ajax.php。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://x.domain.com” 访问。

使用标头检查器还会带来以下结果:

302 是故意的。

这一切都应该出现

【问题讨论】:

    标签: php jquery ajax access-control


    【解决方案1】:

    你不能这样做。

    Access-Control-Allow-Origin 必须出现在允许访问的实际资源上,而不仅仅是重定向。 (否则,您可以通过将此标头重定向到您想要的任何内容来绕过安全限制!)

    【讨论】:

    • 对不起,我应该更清楚。 302 只是因为没有满足请求(POST)的特定参数。与尝试传递源访问控制标头无关
    • 那么,您要重定向到的资源的标头是什么? ACAO 是在那个上面设置的吗?
    【解决方案2】:

    您是否尝试通过 .htaccess 使用它?

    Header add Access-Control-Allow-Origin "*"
    Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
    Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
    

    启用 a2enmod 标头

    或修改您的 php 脚本并将*(星号)替换为x-requested-with

    【讨论】:

    • 试过了,结果还是一样!
    猜你喜欢
    • 2016-11-10
    • 2012-03-16
    • 1970-01-01
    • 2016-04-04
    • 2012-04-27
    • 2019-12-12
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多