我正在使用slim api integration在角度js中开发登录表单。我在这个项目中使用了多个api,但只有当我尝试使用post请求登录时才显示错误。当我使用post请求向服务器发送登录请求时,它会在控制台上抛出错误,如。
Failed to load resource: the server responded with a status of 404 (Not Found)
XMLHttpRequest cannot load http://example.com/Youin-api/v1/business/login. Response for preflight has invalid HTTP status code 404
我的后端代码:
$app->post('/business/login', function() use($app) {
$postvar = json_decode($app->request->getBody(), true);
verifyRequiredParams(array('emailid', 'pwd'));
$email = $postvar['emailid'];
$pwd = $postvar['pwd'];
// validating email address
validateEmail($email);
$db = new DbHandler();
$response = $db->loginBuser($email, $pwd);
// echo json response
echoRespnse(200, $response);
});
控制器:
public function loginBuser($email, $pwd)
{
$response = array();
$stmt = $this->conn->prepare("SELECT BID from business_login_tbl WHERE emailid = ? and login_pwd = ?";
$stmt->bind_param("ss",$email,$pwd);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();
if($num_rows > 0)
{
$response["code"] = "Success";
$response["error"] = false;
$response["user"] = $this->getBusinessuserByEmail($email);
}
else
{
$response["code"] = "failed";
$response["error"] = true;
$response["message"] = "Oops! Username of password Missmatch";
}
return $response;
}
我的回音功能:
function echoRespnse($status_code, $response) {
$app = \Slim\Slim::getInstance();
// Http response code
$app->status($status_code);
// setting response content type to json
$app->contentType('application/json');
echo json_encode($response);
}
我也在使用cors:
$app = new \Slim\Slim();
$response = $app->response();
$response>header('Access-Control-Allow-Origin', 'http://example.com');
$response->header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, X-authentication, X-client');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
我不知道我的前端和后端代码有什么问题。谢谢提前..!
答案 0 :(得分:1)
当您通过$http
服务使用内容类型application/json
和自定义标头(X-...
)发出请求时,浏览器会执行预检请求以检查CORS
标头。预检请求只是对指定端点的HTTP OPTIONS
请求。如果您的API未实现OPTIONS处理,则可能会收到404错误,无法处理请求。
答案 1 :(得分:0)
您的API似乎没有您正在调用的端点,或者您的实现出现错误导致404(可能用户不存在)。你打电话给哪个网址?你的后端有这样的东西吗?
$app->post('<login-url>', function () {
// Your logic here..
});
如果您提供更多信息,我们可以调查并尝试为您提供帮助。
答案 2 :(得分:0)
您遇到的问题是CORS。
跨源资源共享。
我最近发布了一些关于如何启用它的文档。
http://www.slimframework.com/docs/cookbook/enable-cors.html
如果您有任何疑问或遇到任何问题,请查看并告诉我。