1. 程式人生 > >ajax跨域,以及在laravel中實現跨域

ajax跨域,以及在laravel中實現跨域

今天有個朋友問到了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;
		}