Access-Control-Allow-Origin is not showing up in response headers from codeigniter

后端 未结 4 964
太阳男子
太阳男子 2021-01-03 08:24

My Codeigniter file says

$CI->output->set_header(\"Access-Control-Allow-Origin: *\");
$CI->output->set_header(\"Access-Control-Expose-Headers: Ac         


        
4条回答
  •  一向
    一向 (楼主)
    2021-01-03 09:00

    If you look closely you can also notice the content-type being different: it's text/html, whereas you are requesting application/json. This happens because while you are preparing the headers correctly, you never actually output them. As far as I know you can do this in at least 2 ways:

    1. Use the output library's set_output function to output everything at once.

      $json = json_encode(array("city" => "dhaka"));
      
      $this->output->set_header("Access-Control-Allow-Origin: *");
      $this->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
      $this->output->set_status_header(200);
      $this->output->set_content_type('application/json');
      
      $this->output->set_output($json);
      
    2. Call the output-library's _display() function, to first output the correct headers and then append your json object with echo.

      $this->output->set_header("Access-Control-Allow-Origin: *");
      $this->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
      $this->output->set_status_header(200);
      $this->output->set_content_type('application/json');
      $this->output->_display();
      
      echo json_encode(array("city" => "dhaka"));
      

      This function sends the finalized output data to the browser along with any server headers and profile data. (From CI/system/core/Output.php line 316)

提交回复
热议问题