目前在做微信登入的網頁,使用的是微信提供的介面,使用者造訪的index/index的時候,跳到微信指定的url上:
function index(){
$wxService = \App::make('App\Http\Service\WXActivityService');
$target_url = route('Index/Activity');
$redirect_url = $wxService->getWxRedirectUrl($target_url);
return redirect()->intended($redirect_url);
}
這段程式碼很簡單,就是根據微信指定的url格式來拼接url,然後重定向到這個url($target_url)上.微信會根據其中的redirect_uri來重定向回我設定的$target_url 頁面.
但是現在的問題是,微信那邊帶著code重定向回我的頁面以後,我這邊伺服器會收到兩次同樣的請求,這就很奇怪,請問大神這是什麼情況?是不是laravel的跨站重定向有問題?header函數來重定向也不能實現,實在是非常鬱悶...
我記錄了日誌,發現index方法是只執行了一次的,但是$target_url 卻被訪問了兩次...
檢查一下,兩次請求分別的 Request Method:
因為是跨域請求,客戶端發先發送一個OPTIONS 請求
Preflighted Requests是CORS中一種透明伺服器驗證機制。預檢請求首先需要向另外一個網域的資源發送一個 HTTP OPTIONS 請求頭,其目的就是為了判斷實際發送的請求是否是安全的。
很有可能是這個問題,
我現在用axios 作為我的網路請求庫,也遇到了這個問題,跨域訪問的時候,都會先發送一個OPTIONS請求,用來判斷接下來的請求是否安全和被允許
我現在的做法是,在index.php 入口文件中,檢測,是否為OPTIONS 請求,如果是就返回一個狀態
具體代碼