PHP:标头(“Access-Control-Allow-Origin:*”)不起作用

时间:2014-02-12 07:33:50

标签: php

我正在使用PHP,使用ajax发送请求到0.0.0.0/ajax.php,但实际网址现在是localhost,因此由于相同的来源政策而导致javascript错误

ajax.php

session_start();

if ( $_SESSION['http_origin'] ) {
    header("Access-Control-Allow-Origin: *");
}

// below is some code handle ajax request

我知道在任何输出后头文件功能都不起作用,所以上面的代码位于源文件的顶部。 $_SESSION['http_origin']已设置为TRUE,如果将echo "ok";置于if语句的header下,则会输出“ok”。

但是,当我在此页面上使用ajax请求时,它会显示错误,该错误归因于同一来源政策,如果我将$_SESSION['http_origin']替换为1 ,它会正常工作。

那么,我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

  • <?php代码
  • 开头删除空格
  • 也尝试使用ob_start();在<?php
  • 开始后排在最前面

答案 1 :(得分:0)

我猜,$_SESSION['http_origin']应该是$_SERVER['http_origin'],而当你输入1代替$_SESSION['http_origin']时,它始终为真,所以它适用。

答案 2 :(得分:0)

问题解决了。

这是因为会话无法在不同的域上共享。如果我访问0.0.0.0,则输出“ok”,但如果我访问localhost,则不会。

我的错误。