我知道有很多问题在那里有同样的问题,但没有解决方案的还没有为我工作。
我有一个ReactJS应用消耗内置流明的API。 该API也由本土作出反应和JQuery AJAX消耗上都工作正常。
当我尝试发送与ReactJS Axios公司POST请求,我得到了OPTIONS请求405不允许错误。
的Axios的要求是:
const body = { username, password };
axios.post(`{$uri}/payment/api/login`, {body})
.then(res => console.log(res))
.catch(err => console.log('Login: ', err));
起初我以为这是一个CORS的问题,这将是奇怪的,因为我的API是由托管在AWS S3没有问题静态站点消耗。 所以我CORS中间件正常工作。
比我尝试使用fetchAPI调用API,并且工作正常。 我试图发送一个POST请求到虚拟API https://jsonplaceholder.typicode.com/users从Axios公司和它工作得很好。
编辑
好了,所以我刚刚发现fetchAPI在应用程序/ x-WWW-form-urlencoded格式这在某种程度上不受飞行前请求发送数据。 这应该意味着有与CORS中间件的问题。
CORSMiddleware
<?php
namespace App\Http\Middleware;
use Closure;
class CORSMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, PATCH, DELETE, OPTIONS');
$response->header('Access-Control-Allow-Headers', $request->header('Access-Control-Request-Headers'));
$response->header('Access-Control-Allow-Origin', '*');
}
}
完全相同的中间件也用于在管腔的另一API构建和由使用Axios公司 Vue的前端消耗。
附加信息
GET请求正常工作在我的API。