ajax跨域,以及在laravel中實現跨域
阿新 • • 發佈:2019-02-20
今天有個朋友問到了laravel中ajax的跨域問題,之前看過不少,不過專案中從來沒用過,基本都忘記了... 為了解決問題,找了找資料,百度上到處是,這裡記錄2篇,感覺還不錯: http://www.cnblogs.com/dojo-lzz/p/4265637.html http://blog.csdn.net/leedaning/article/details/53787008 這裡羅列出文章提到的幾點: 1.jsonp // 只支援get 2.使用代理,不涉及伺服器的話,想了想,通過請求我們本域名下的後端,再通過後端去呼叫其他域名,中間看怎麼處理,應該也可以解決! 3.CORS // 跨源資源共享協議,這個基本是最好的!但需要伺服器配置一些響應頭。------- 既然要跨域獲取資料,對方伺服器應該已經支援這些了吧。 接下來,再說laravel中實現,找了找: 1.還有個專門的laravel包:laravel-cors // 官方寫的是 5.3+ 2.自己寫個中介軟體: laravel的中介軟體分2種:前置和後置,不瞭解的,參考文件:http://laravelacademy.org/post/2803.html 所以,我們直接在 '全域性中介軟體' ,新增 '後置中介軟體' ,讓所有連線都支援跨域,也可放在自定義中介軟體,自己設定什麼時候呼叫。 中介軟體的程式碼,很簡單: public function handle($request, Closure $next) { $response = $next($request); $response->header('Access-Control-Allow-Origin', config('app.allow')); $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept'); $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS'); $response->header('Access-Control-Allow-Credentials', 'true'); return $response; }