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-corsfruitcake/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 问题

带有标题集的流明/laravel中的CORS问题

如何解决 Laravel + Nuxt.js 中的 CORS 错误

调用图像时laravel中直接路径中的Cors Origin