php - Pourquoi Laravel redirige-t-il deux fois?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-20 10:07:24
0
1
1174

Actuellement, nous construisons une page Web pour la connexion WeChat, en utilisant l'interface fournie par WeChat. Lorsque les utilisateurs accèdent à l'index/index, ils accèdent à l'URL spécifiée par WeChat :

.
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);
}

Ce code est très simple. Il fusionne simplement l'URL selon le format d'URL spécifié par WeChat, puis redirige vers cette URL ($target_url) et redirigera vers la page $target_url que j'ai définie en fonction du redirect_uri
Mais. maintenant, le problème est qu'après la redirection de WeChat vers ma page avec le code, mon serveur recevra la même demande deux fois, ce qui est très étrange. Pourriez-vous s'il vous plaît me dire ce qui se passe ? un problème avec l'orientation ? La fonction header ne peut pas être utilisée pour rediriger, ce qui est vraiment frustrant... J'ai enregistré le journal et constaté que la méthode d'index n'a été exécutée qu'une seule fois, mais que $target_url a été accédé deux fois...

曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(1)
滿天的星座

Vérifiez la méthode de requête des deux requêtes :
Parce qu'il s'agit d'une requête inter-domaines, le client envoie d'abord une requête OPTIONS
Les requêtes contrôlées en amont sont un mécanisme de vérification de serveur transparent dans CORS. La requête de contrôle en amont doit d'abord envoyer un en-tête de requête HTTP OPTIONS à la ressource d'un autre nom de domaine. Le but est de déterminer si la requête réellement envoyée est sûre.

Il est très probable que ce soit le problème.
J'utilise maintenant axios comme bibliothèque de requêtes réseau, et j'ai également rencontré ce problème lors de l'accès à plusieurs domaines, une requête OPTIONS sera d'abord envoyée pour déterminer si la requête suivante est. sûr et acceptable. Autoriser

Mon approche actuelle consiste à vérifier s'il s'agit d'une requête OPTIONS dans le fichier d'entrée index.php, et si oui, renvoyer un statut
Code spécifique

if ($_SERVER['REQUEST_METHOD']=='OPTIONS') {
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization");
    header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS,PATCH');
    return;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal