POST请求与ReactJS失败与预飞行选项状态码= 404与YII2 REST API



我的前端和后端在nginx服务器上运行,我已经为proxy_pass配置,GET方法工作正常,但POST方法被拒绝,因为预飞行请求失败,预飞行选项返回404错误。我怎样才能解决这个问题,以确保飞行前选项返回适当的代码。下面是我的REST配置。

['class' => 'yiirestUrlRule', 
'pluralize'=>false,
'controller' => ['v1/auth'],
'extraPatterns'=>[
'GET index'=>'index',
'POST login'=>'login',                    
],

],

对/v1/auth/login的请求首先发送一个preflight OPTIONS请求,该请求会抛出404。我在配置文件中添加了如下选项,但似乎也没有解决问题

['class' => 'yiirestUrlRule', 
'pluralize'=>false,
'controller' => ['v1/auth'],
'extraPatterns'=>[
'GET index'=>'index',
'POST login'=>'login', 
'OPTIONS '=>'options',
],

],

当浏览器要发送POST请求时,它首先发送一个preflight请求来检查是否可以发送POST请求本身。这是通过将OPTIONS请求发送到将发送POST请求的相同url来完成的。

在你的路由规则中登录请求的URL是这样的//your-domain.example/v1/auth/login。您已经为POST请求配置了此url的规则,但没有为OPTIONS请求配置规则。如果你添加像'OPTIONS '=>'options',这样的模式,它只定义了OPTIONS请求路由到//your-domain.example/v1/auth的路由。

要为OPTIONS请求定义与POST请求使用的登录url相同的路由,您必须添加模式'OPTIONS login' => 'options'。所以规则定义应该是这样的:

[
'class' => 'yiirestUrlRule', 
'pluralize'=>false,
'controller' => ['v1/auth'],
'extraPatterns' => [
'GET index' => 'index',
'POST login' => 'login',
'OPTIONS login' => 'options',
],
],