net::ERR_CONNECTION_REFUSED 超薄框架
net::ERR_CONNECTION_REFUSED Slim Framework
就是这样。我在服务器上 运行 我的 API,它在服务器 localhost:8080 中的 运行。
有人告诉我,为了从我的机器(使用 vpn)本地访问 api,url 是 xxx.xxx.xxx:8080
所以我试过了
$http({
url:'http://xxx.xxx.xxx.xxx:8080/login',
method:"POST",
data:{user:$scope.user, password:$scope.password}
})
我的api路线是这样的
$app->post('/login', function ($request, $response) {
//Parametros que se pasan a la api
$input = $request->getParsedBody();
$req = $input['usuario'];
$md5pass = md5($input['password']);
$sth = $this->db->prepare("query");
//bindParam pasandole los parametros para evitar injecciones sql
$sth->bindParam("password", md5($input['password']));
$sth->bindParam("usuario", $input['usuario']);
$sth->execute();
$todos = $sth->fetchAll();
$cliente_id = $todos->cliente_id;
....
但是我从 chrome
得到这个错误
OPTIONS http://xxx.xxx.xxx.xxx:8080/login net::ERR_CONNECTION_REFUSED
知道会是什么吗?我是否需要将设置更改为我的 Slim 配置或其他配置?
这是所谓的:CORS Preflight request。
您可以尝试添加这个小中间件以允许所有预检请求。当然,你应该添加自己的安全逻辑。
// CORS preflight middleware
$app->add(function (Request $request, Response $response, $next) {
if ($request->getMethod() !== 'OPTIONS' || php_sapi_name() === 'cli') {
return $next($request, $response);
}
$response = $next($request, $response);
$response = $response->withHeader('Access-Control-Allow-Origin', '*');
$response = $response->withHeader('Access-Control-Allow-Methods', $request->getHeaderLine('Access-Control-Request-Method'));
$response = $response->withHeader('Access-Control-Allow-Headers', $request->getHeaderLine('Access-Control-Request-Headers'));
return $response;
});
就是这样。我在服务器上 运行 我的 API,它在服务器 localhost:8080 中的 运行。 有人告诉我,为了从我的机器(使用 vpn)本地访问 api,url 是 xxx.xxx.xxx:8080 所以我试过了
$http({
url:'http://xxx.xxx.xxx.xxx:8080/login',
method:"POST",
data:{user:$scope.user, password:$scope.password}
})
我的api路线是这样的
$app->post('/login', function ($request, $response) {
//Parametros que se pasan a la api
$input = $request->getParsedBody();
$req = $input['usuario'];
$md5pass = md5($input['password']);
$sth = $this->db->prepare("query");
//bindParam pasandole los parametros para evitar injecciones sql
$sth->bindParam("password", md5($input['password']));
$sth->bindParam("usuario", $input['usuario']);
$sth->execute();
$todos = $sth->fetchAll();
$cliente_id = $todos->cliente_id;
....
但是我从 chrome
得到这个错误OPTIONS http://xxx.xxx.xxx.xxx:8080/login net::ERR_CONNECTION_REFUSED
知道会是什么吗?我是否需要将设置更改为我的 Slim 配置或其他配置?
这是所谓的:CORS Preflight request。
您可以尝试添加这个小中间件以允许所有预检请求。当然,你应该添加自己的安全逻辑。
// CORS preflight middleware
$app->add(function (Request $request, Response $response, $next) {
if ($request->getMethod() !== 'OPTIONS' || php_sapi_name() === 'cli') {
return $next($request, $response);
}
$response = $next($request, $response);
$response = $response->withHeader('Access-Control-Allow-Origin', '*');
$response = $response->withHeader('Access-Control-Allow-Methods', $request->getHeaderLine('Access-Control-Request-Method'));
$response = $response->withHeader('Access-Control-Allow-Headers', $request->getHeaderLine('Access-Control-Request-Headers'));
return $response;
});