Laravel CORS 问题中的 XMLHttpRequest POST
Posted
技术标签:
【中文标题】Laravel CORS 问题中的 XMLHttpRequest POST【英文标题】:XMLHttpRequest POST in Laravel CORS Issue 【发布时间】:2021-03-05 22:42:08 【问题描述】:我在 Laravel 中遇到了 XMLHttpRequest POST 方法的问题,我尝试应用多个引用,例如 MyNotepaper 和此链接 laravel-cors-fruitcakes,但仍然没有工作。
这是访问在线 API 数据,在 localhost 上调用。
这是我的卡住:
Reason: CORS header ‘Access-Control-Allow-Origin’ missing
这是我的代码:
var xhr = new XMLHttpRequest();
var url = 'https://xxx.yyyy.com/api/update';
var params = "server=server&password=12345";
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("Accept", "application/json");
xhr.onreadystatechange = function()
if(this.readyState == 4 && this.status == 200)
console.log(xhr.responseText);
;
xhr.send(params);
关于 post 方法、URL 链接和与在 Postman 中显示数据的代码中相同的参数的信息,我不知道我忘记了哪一部分。
这是我的路线:
Route::get('/', function ()
return view('welcome');
);
对于中间件设置,我在其 URL 链接参考中进行了尝试。
来自MyNotepaper,这是我的中间件设置:
<?php
namespace App\Http\Middleware;
use Closure;
class Cors
public function handle($request, Closure $next)
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH,
DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Accept, Content-Type,
Authorization');
如果有人知道并可以帮助我,非常高兴和感激所有
【问题讨论】:
你添加了CORS中间件吗? @tirtakeniten 是的,我已经完成了 请将 CORS 中间件设置放在您的问题中。 @tirtakeniten 已编辑 什么版本的 Laravel? 【参考方案1】:将您的中间件放在其他中间件的顶部。
<?php
// file: app/Http/Kernel.php
protected $middleware = [
\App\Http\Middleware\Cors::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
我建议你使用来自barryvdh/laravel-cors
的中间件包。
【讨论】:
barryvdh/laravel-cors
是fruitcake/laravel-cors
我正在使用 laravel 6 并从这个参考文献 mynotepaper.com/easiest-way-to-allow-cors-in-laravel 一步一步,我做了你的建议“把你的中间件放在其他中间件的顶部。”但还是不行
@lagbox 我也从 barryvdh/laravel-cors 尝试过是fruitcake/laravel-cors,焦点确实很慢,但仍然出现堆栈错误。
也许你的 web 服务器默认不接受 cors。例如,某些共享主机默认禁用 cors。以上是关于Laravel CORS 问题中的 XMLHttpRequest POST的主要内容,如果未能解决你的问题,请参考以下文章
错误:laravel/VueJS ajax 请求中的 CORS
Laravel CORS 问题中的 XMLHttpRequest POST
身份验证中的 Laravel Angular CORS 问题