1.查閱 ThinkPHP 的文檔,文檔給出的例子:php
Route::get('new/:id', 'News/read') ->ext('html') ->allowCrossDomain();
只須要在路由的尾部添加 allowCrossDomain() 便可實現跨域請求,因此我在每一個須要進行跨域訪問的路由後都添加了 ->allowCrossDomain(),通常的跨域問題得以解決。可是有的路由仍是跨域失敗?html
2.通過百度搜索,找到緣由是因爲前端的 AJAX 請求一般須要攜帶 token 驗證,因此還須要將 token 添加到 Access-Control-Allow-Headers前端
文檔的例子是:thinkphp
Route::get('new/:id', 'News/read') ->ext('html') ->header('Access-Control-Allow-Origin','thinkphp.cn') ->header('Access-Control-Allow-Credentials', 'true') ->allowCrossDomain();
按照上面的方法添加 ->header('Access-Control-Allow-Headers','token') ->allowCrossDomain();代碼以下:跨域
Route::get('your route', 'News/read') ->header('Access-Control-Allow-Headers', 'token') ->allowCrossDomain();
ok,跨域問題解決;thinkphp5