custom block menu path returns json Ok, but a 404 status header
First of all, for JSON output use drupal_json_output as a delivery callback in your menu. It will make thinks much easier:

function tripchi_menu() {
    return array(
        'tripchi/getme' =&gt; array(
            'title' =&gt; 'My Profile',
            'description' =&gt; 'mobile test for user status and object',
            'access callback' =&gt; 'user_access',
            'access arguments' =&gt; array('access content'),
            'page callback' =&gt; 'tripchi_getme',
            'delivery callback' =&gt; 'drupal_json_output'
         ),
    );
}


Then in your menu callback just return array. You don't need any other fancy stuff. I also faced 404 issue, but with this solution AND explicitly set response code 200 everything worked fine.

function tripchi_getme(){
    global $user;
    $json = array();
    // ... a bunch of stuff to construct a special array;

    // Only this was needed to make the stuff work.
    http_response_code(200);

    return $json;
}


I couldn't tell if the cause of my trouble was drupal or apache or both, but this certainly helped. Note that Access-Control-Allow-Origin was not needed to make this work (and I didn't plan to use cross domain calls either).