选项405(不允许使用方法)slimphp

时间:2018-10-20 11:10:58

标签: angular rest cors slim

我通过共享主机上的苗条php制作rest api,但是前端使用有角度的消息,因此当我从本地主机发送数据时出现错误选项405(不允许使用方法)。请帮我解决这个问题。

Request Method Options

2 个答案:

答案 0 :(得分:0)

当您尝试从另一个域调用某些API时,会发生此问题。例如,要将请求从“ url1.com”发送到“ url2.com”,您必须在托管“ url2.com”的服务器上设置CORS策略。

因此,应随每次请求从服务器发送诸如Access-Control-Allow-Origin,Access-Control-Allow-Headers,Access-Control-Allow-Methods之类的CORS标头。

您可以阅读如何进行此操作here

此外,您还必须为您的请求启用OPTIONS请求(只需在每个OPTION请求上发送状态代码200)。这件事称为预检请求。您需要为其创建中间件:

$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', '*');
    $response = $response->withHeader('Access-Control-Allow-Headers', '*');    
    return $response;
});

答案 1 :(得分:0)

我已经阅读了有关此内容。但我不明白配置。我将配置此代码。是吗?

<?php

使用\ Psr \ Http \ Message \ ServerRequestInterface作为请求; 使用\ Psr \ Http \ Message \ ResponseInterface作为响应;

$ app =新\ Slim \ App;

$ app-> post('/ login',function(Request $ request,Response $ response,array $ args){

$email = $request->getParam('email_login');
$response->getBody()->write("Hello, $email");

return $response;

});