Maison  >  Article  >  cadre php  >  Comment compléter des requêtes inter-domaines dans thinkphp

Comment compléter des requêtes inter-domaines dans thinkphp

PHPz
PHPzoriginal
2023-04-12 09:04:331036parcourir

Avec la popularité du développement de séparation front-end et back-end, les requêtes inter-domaines sont devenues une exigence de plus en plus courante. Lors du développement à l'aide du framework thinkphp, comment implémenter des méthodes de contrôleur d'arrière-plan de requêtes inter-domaines ? Cet article explique comment utiliser la classe Header et les bibliothèques tierces fournies avec le framework thinkphp pour traiter des requêtes inter-domaines.

1. Classe Header

Dans le framework thinkphp, vous pouvez utiliser la classe Header pour définir l'en-tête de réponse afin d'implémenter les fonctions de requête inter-domaines. La méthode spécifique consiste à ajouter le code suivant à la méthode du contrôleur :

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

Parmi eux, la première ligne de code indique que les requêtes inter-domaines provenant de toutes les sources sont autorisées, et peuvent également être définies sur une source spécifique ; du code indique que les requêtes portées par les requêtes inter-domaines sont autorisées. Après avoir configuré cela, vous pouvez implémenter des requêtes inter-domaines de base.

2. Bibliothèques tierces

En plus d'utiliser la classe Header pour configurer des requêtes inter-domaines, vous pouvez également utiliser des bibliothèques tierces pour simplifier ce processus. Ce qui suit prend l'extension cors de la bibliothèque CORS (Cross-Origin Resource Sharing) grand public comme exemple pour présenter comment utiliser une bibliothèque tierce pour implémenter des requêtes inter-domaines.

  1. Installer l'extension cors

Ouvrez la fenêtre de ligne de commande et exécutez la commande suivante :

composer require topthink/think-cors
  1. Configurer l'extension cors

Dans le dossier de configuration du projet, créez un fichier cors.php et entrez le code suivant :

<?php

return [
    // 允许的请求域名
    &#39;allow_origin&#39;      => ['*'],
    // 允许的请求头信息
    'allow_headers'     => 'Origin, X-Requested-With, Content-Type, Accept',
    // 允许的请求方法
    'allow_methods'     => 'GET, POST, PUT, DELETE, PATCH',
    // 是否允许发送cookie
    'allow_credentials' => true,
    // 跨域请求缓存时间
    'max_age'           => 3600,
];

Parmi eux, $allow_origin représente le nom de domaine de requête autorisé, qui peut être défini sur un nom de domaine spécifique ou le caractère générique "*" $allow_headers représente les informations d'en-tête de requête autorisées, $allow_methods représente les méthodes de requête autorisées et $allow_credentials indique si l'envoi de cookies est autorisé, $max_age représente le temps de cache des requêtes inter-domaines.

  1. Modifiez le fichier de configuration

Dans le dossier config du projet, recherchez le fichier app.php, la configuration est la suivante :

return [
    // ...
    'middleware' => [
        // ...
        \think\middleware\Cors::class,
    ],
];
  1. Appelez l'extension cors

Dans la méthode du contrôleur qui nécessite du cross-domain requêtes, vous pouvez l'appeler directement Méthodes dans l'extension cors pour implémenter les paramètres de requêtes inter-domaines :

use think\facade\Cors;

public function index() {
    Cors::allowAllOrigin();
    return json(['code' => 200, 'msg' => 'success']);
}

Après avoir configuré de cette manière, les requêtes inter-domaines peuvent être implémentées.

En résumé, pour implémenter la méthode de contrôleur d'arrière-plan de requêtes inter-domaines du framework thinkphp, vous pouvez utiliser la classe Header ou une bibliothèque tierce. Utilisez la classe Header pour définir manuellement les informations d'en-tête de réponse et utilisez des bibliothèques tierces pour simplifier le processus de configuration. La méthode de mise en œuvre spécifique peut être choisie en fonction de vos propres besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn