Just add the below param to your config file:
access-control-allow-origin = "*"
Or you can even run the nodeos command with this parameter, check mine:
nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --access-control-allow-origin "*" --access-control-allow-headers "*" --access-control-allow-credentials true
No there is not. In the instance of an eosio_assert error message the node is telling you there was an error. It's not like a standard web application where you can decide the status code to return. You should expect a 200 or 500 when hitting the RPC endpoint with a valid signed transaction.
I usually encounter this error when I forget to set the Chain ID on the signing request. The chain ID is returned from the get_info RPC call and is set as the last parameter on the signing request, right after the list of public keys.