【问题标题】:XMLHttpRequest POST in Laravel CORS IssueLaravel CORS 问题中的 XMLHttpRequest POST
【发布时间】: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?

标签: laravel api post xmlhttprequest cors


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2023-03-17
  • 2021-08-22
  • 2023-04-09
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多