选项 405(不允许的方法)slimphp

问题描述 投票:0回答:2

我在共享托管上通过 slim php 制作 REST API,但前端使用 Angular,所以当我从本地主机发送数据时,出现错误 OPTIONS 405(方法不允许)。请帮我解决这个问题。

Request Method Options

angular rest cors slim
2个回答
0
投票

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

因此,每个请求都应从服务器发送诸如 Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods 等 CORS 标头。

您可以在此处阅读如何执行此操作

此外,您必须对您的请求启用 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;
});

0
投票

我已经读到过这一点。但我不明白如何配置。我将配置这段代码。是吗?

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

$app->post('/login', function (Request $request, Response $response, array $args) {
    $email = $request->getParam('email_login');
    $response->getBody()->write("Hello, $email");

    return $response;
});

© www.soinside.com 2019 - 2024. All rights reserved.