Laravel開啟跨域請求

2021-08-07 11:39:47 字數 2558 閱讀 9975

專案中用到了介面,外部呼叫的時候老是請求不到,本地請求卻沒問題,查了下說是因為跨域的問題。

根據網上所說解決方法如下:

1、 建立中介軟體cors.php

命令:php artisan make:middleware cors2、

handle方法中加入如下內容:

$response

=$next($request);

$response

->

header('access-control-allow-origin', '*');

$response

->

$response

->

header('access-control-allow-methods', 'get, post, patch, put, options');

$response

->

header('access-control-allow-credentials', 'false');

return

$response;

其中有以下需要注意的地方:

cors.php檔案內容如下:

<?php

namespace

useclosure;

class

cors

}

如:

protected $middleware = [

];

以下內容為網路摘抄:

跨源資源共享標準

跨源資源共享標準通過新增一系列 http 頭,讓伺服器能宣告哪些**可以通過瀏覽器訪問該伺服器上的資源。另外,對哪些會對伺服器資料造成破壞性響應的 http 請求方法(特別是 get 以外的 http 方法,或者搭配某些 mime 型別的 post 請求),標準強烈要求瀏覽器必須先以 options 請求方式傳送乙個預請求(preflight request),從而獲取知伺服器端對跨源請求所支援 http 方法。在確認伺服器允許跨源請求的情況下,以實際的 http 請求方法傳送那個真正的請求。伺服器端也可以通知客戶端,是不是需要隨同請求一起傳送信用資訊(包括 cookies 和 http 認證相關資料)。

跨源共享標準需要瀏覽器和服務端共同配合才能完成,目前瀏覽器廠商已經可以將請求部分自動完成,所以跨源資源訪問的重點還是在於伺服器端。

下面列出一些標準中可用的響應頭和請求頭。

response header

access-control-allow-origin : 指明哪些請求源被允許訪問資源,值可以為 「*」,」null」,或者單個源位址。

access-control-allow-credentials : 指明當請求中省略 creadentials 標識時響應是否暴露。對於預請求來說,它表明實際的請求中可以包含使用者憑證。

access-control-expose-headers : 指明哪些頭資訊可以安全的暴露給 cors api 規範的 api。

access-control-max-age : 指明預請求可以在預請求快取中存放多久。

access-control-allow-methods : 對於預請求來說,哪些請求方式可以用於實際的請求。

access-control-allow-headers : 對於預請求來說,指明了哪些頭資訊可以用於實際的請求中。

origin : 指明預請求或者跨域請求的**。

access-control-request-method : 對於預請求來說,指明哪些預請求中的請求方式可以被用在實際的請求中。

access-control-request-headers : 指明預請求中的哪些頭資訊可以用於實際的請求中。

request header

origin : 表明傳送請求或預請求的**。

access-control-request-method : 在傳送預請求時帶該請求頭,表明實際的請求將使用的請求方式。

access-control-request-headers : 在傳送預請求時帶有該請求頭,表明實際的請求將攜帶的請求頭。

JS跨域請求 Ajax跨域請求JSONP

前兩天被問到ajax跨域如何解決,還真被問住了,光知道有個什麼jsonp,迷迷糊糊的沒有說上來。抱著有問題必須解決的態度,我看了許多資料,原來如此。為何一直知道jsonp,但一直迷迷糊糊的不明白呢?網上那些介紹資料都寫的太複雜了!我是能多簡單就多簡單,爭取讓你十分鐘看完!ajax之所以需要 跨域 罪...

JS跨域請求 Ajax跨域請求JSONP

前兩天被問到ajax跨域如何解決,還真被問住了,光知道有個什麼jsonp,迷迷糊糊的沒有說上來。抱著有問題必須解決的態度,我看了許多資料,原來如此。為何一直知道jsonp,但一直迷迷糊糊的不明白呢?網上那些介紹資料都寫的太複雜了!我是能多簡單就多簡單,爭取讓你十分鐘看完!ajax之所以需要 跨域 罪...

JSONP跨域請求

看到jsonp我們會很自然的想到json,但它們卻有很大的不同,json是一種輕量級的資料交換格式,而jsonp可以說是一種非官方的資料互動協議。jsonp json with padding 利用jsonp可以從別的網域名稱下獲取資料,即跨域獲取資料。由於同源策略不允許xmlhttprequest...