I know there are a lot of questions
like this, but none I've seen have fixed my issue. I've used at least 3 microframeworks
already. All of them fail at doing a simple POST, which should return the data
back:
The angularJS
client:
var app =
angular.module('client', []);
app.config(function ($httpProvider)
{
//uncommenting the following line makes GET requests fail as
well
//$httpProvider.defaults.headers.common['Access-Control-Allow-Headers']
= '*';
delete
$httpProvider.defaults.headers.common['X-Requested-With'];
});
app.controller('MainCtrl',
function($scope, $http) {
var baseUrl =
'http://localhost:8080/server.php'
$scope.response =
'Response goes here';
$scope.sendRequest = function() {
$http({
method: 'GET',
url: baseUrl + '/get'
}).then(function successCallback(response) {
$scope.response =
response.data.response;
}, function errorCallback(response) {
});
};
$scope.sendPost = function()
{
$http.post(baseUrl + '/post', {post: 'data from client', withCredentials:
true })
.success(function(data, status, headers, config) {
console.log(status);
})
.error(function(data, status, headers,
config) {
console.log('FAILED');
});
}
});
The
SlimPHP
server:
require 'vendor/autoload.php';
$app = new
\Slim\Slim();
$app->response()->headers->set('Access-Control-Allow-Headers',
'Content-Type');
$app->response()->headers->set('Content-Type',
'application/json');
$app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST,
OPTIONS');
$app->response()->headers->set('Access-Control-Allow-Origin',
'*');
$array = ["response" => "Hello
World!"];
$app->get('/get', function() use($array) {
$app = \Slim\Slim::getInstance();
$app->response->setStatus(200);
echo json_encode($array);
});
$app->post('/post', function() {
$app =
\Slim\Slim::getInstance();
$allPostVars =
$app->request->post();
$dataFromClient =
$allPostVars['post'];
$app->response->setStatus(200);
echo
json_encode($dataFromClient);
});
$app->run();
I have
enabled CORS, and GET requests work. The html updates with the JSON content sent by the
server. However I get a
XMLHttpRequest cannot load href="http://localhost:8080/server.php/post"
rel="noreferrer">http://localhost:8080/server.php/post. Response for
preflight has invalid HTTP status code
404
Everytime I try to use
POST. Why?
EDIT: The req/res as requested by
Pointy
rel="noreferrer">
No comments:
Post a Comment