首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问-控制-允许-原产地丢失了laravel-9和vuejs3

访问-控制-允许-原产地丢失了laravel-9和vuejs3
EN

Stack Overflow用户
提问于 2022-10-26 17:35:24
回答 1查看 53关注 0票数 -1

我有第三首和第九部。我希望使用vue中的fetch-api将数据发送到后端,并获得响应,但不幸的是,当我单击submit按钮时,我得到了这个错误消息。有人知道我怎么解决这个问题吗?

我试过水果蛋糕/拉拉库尔图书馆,但仍然没有用。

来自firefox de工具的错误](https://i.stack.imgur.com/SCcqL.png)

代码语言:javascript
复制
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*', 'sanctum/csrf-cookie'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => false,

];

vuejs代码

代码语言:javascript
复制
methods: {
    registerUser() {
      fetch("http://localhost:8000/api/tippspiel/register", {
        method: "POST",
        body: JSON.stringify({
          email: this.email,
          username: this.username,
          password: this.password,
          passwordConfirmation: this.passwordConfirmation,
        }),
        headers: {
          'Content-type': 'application/json; charset=UTF-8',
        },
      }).then((response) => {
        return response.json();
      }).then((data) => {
        console.log(data);
      })
    }
  }

控制码

代码语言:javascript
复制
    public function register(Request $request)
    {
        $data = $request->validate([
            "email" => "required|email",
            "username" => "required|min:6|max:15",
            "password" => "required|min:12|max:40",
            "passwordConfirmation" => "required|same:password",
            "ageCheck" => "required|accepted",
            "privacyCheck" => "required|accepted"
        ]);
        return [
            "status" => "ok",
            "id" => 1,
            "username" => $request->username
        ];
    }

谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2022-10-27 08:58:46

创建新的中间件,名为Cors,在其中放置以下代码:

代码语言:javascript
复制
public function handle($request, Closure $next)
    {
        $headers = [
            'Access-Control-Allow-Origin' => "*",
            'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS',
            'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin',
        ];
        if ($request->getMethod() == "OPTIONS") {
            return \Response::make('OK', 200, $headers);
        }
        $response = $next($request);
        foreach ($headers as $key => $value)
            $response->header($key, $value);
        return $response;
    }

转到protected $middleware数组中的protected $middleware,添加以下内容:

代码语言:javascript
复制
\App\Http\Middleware\Cors::class,

protected $routeMiddleware数组中,添加以下内容:

代码语言:javascript
复制
'cors' => \App\Http\Middleware\Cors::class,

在“路由”文件中,添加以下内容:

代码语言:javascript
复制
Route::middleware(['cors'])->group(function(){
    //your route here
});

在laravel文件夹中运行以下命令:

php artisan optimize:clear

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74211957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档