Comment éviter l'erreur 403 interdite dans un plugin WP avec Ajax et PHP

Je suis tombé sur "l'erreur 403 interdite" pour laquelle de nombreuses explications / solutions peuvent être trouvées à de nombreux endroits, la plupart sur Stack.
Cependant, je lutte pendant un bon moment pour résoudre cette erreur dans ma situation.
J'ai posé cette même question sur le forum WordPress mais n'ai obtenu aucune réponse ..

J'ai un plugin WordPress, appelons-le "foobar", qui traite un shortcode.

Le fichier php de mon plugin, foobar.php, construit et retourne à un moment donné le code Javascript:

$myvariable = '
$.ajax({
 url: "'.plugin_dir_url( __FILE__ ) .'myPHPFunction.php",
 '.type: "post",
 success: function(response) { console.log("return from myPHPFunction.php:"+response); },
 error: function(xhr,status,error) { console.log("status="+status+",xhr="+xhr+",errth="+error);}
 });';

return $myvariable;

La raison pour laquelle je veux appeler php depuis le navigateur avec un appel ajax est que j'ai besoin que son contenu soit exécuté de manière asynchrone lorsque la page est affichée.

Le fichier myPHPFunction.php se trouve dans le même répertoire que celui du plugin.

myPHPFunction.php est très puissant, il fait: 😉


Lorsque j'ouvre une page WordPress (mytestpage) contenant le shortcode, WordPress crée et exécute le Javascript dans une page HTML http://www.mywebsite.com/mytestpage/, et j'obtiens dans la console du navigateur:

status=error,xhr=

403 Forbidden

Forbidden

You don't have permission to access /wp-content/plugins/foobar/myPHPFunction.php on this server.

,errth=Forbidden

Curieusement, c'est ce qui se passe localement sur mon serveur de développement (j'utilise MAMP 5.7). Sur le site de production chez mon fournisseur, ça marche.
Mais j'ai besoin de l'avoir en cours de développement…

Si je déplace myPHPFunction.php à la racine de mon site Web et que je mets à jour mon code en conséquence:

 url: "http://www.mywebsite.com/myPHPFunction.php",

ça marche ..: abcd est retourné dans la console…

Cela vient donc très probablement du fait que la page HTML générée par WordPress et le fichier PHP ne sont pas dans le même domaine.
Comme myPHPFunction.php doit être livré avec mon plugin, il n'y a aucun moyen de le mettre en dehors du répertoire du plugin.

Par conséquent, je dois résoudre l'appel interdomaine.

Je pense que résoudre ce problème sur le serveur par configuration (.htaccess) n'est pas sûr.
Dans le cas d'un plugin, aucune garantie que mes utilisateurs de plugins ne rencontreront cette erreur dans leur contexte de déploiement.
Et de nombreux utilisateurs ne savent pas / ne savent pas comment fonctionner sur leur serveur apache, surtout s'il est géré par un fournisseur (et éventuellement mutualisé).
D'ailleurs ce n'est probablement pas simple: je me suis essayé sans succès https://enable-cors.org/server_apache.html.

L'autre solution semble essayer de renvoyer les en-têtes par le serveur:

https://stackoverflow.com/questions/10640596/header-set-access-control-allow-origin-in-htaccess-doesnt-work

Cela n'a pas fonctionné non plus ..
J'ai essayé d'ajouter ces lignes dans l'un de mes fichiers php, sans succès …

Je manque maintenant d'idées…

Toute aide appréciée…

Merci beaucoup

8 – IE11 déclenche une erreur interdite 403

Cette question est assez simple car je ne sais même pas par où commencer.

Nous avons découvert que lorsqu'un utilisateur essaie de naviguer sur notre site Web (Drupal 8.8.2, avec PHP 7.3.15 sur Nginx), il reçoit une erreur interdite 403 avec une “ raison probable '' donnée comme site nécessitant une connexion. Aucune erreur liée à cela n'apparaît dans le journal de Drupal.

Il ne nécessite pas de connexion pour afficher le site. Nous avons testé sur Windows 10 et 7 et avons obtenu le même résultat. Tous les autres navigateurs fonctionnent très bien. Il peut s'agir de paramètres de serveur sans rapport avec Drupal, mais je voulais publier ici et voir si quelqu'un s'est heurté à cela, ou sait où je devrais même chercher à le résoudre.

java – Erreur HTTP 403 interdite dans le service de repos avec proxy et certificats, dans tomcat 8 64 bits incorporés dans Eclipse 2019-6, jdk 1.8 64 bits et axis2

Le service consommateur du REST avec certificats et proxy en lui-même ne fonctionne que via https et également par SOAPUI. Mais je dois l'encapsuler dans un autre service SOAP fourni avec de nombreux paramètres, et l'un d'eux vous dit d'appeler le service consommateur du REST de mon fournisseur. Les paramètres atteignent le consommateur du REST, transmettent les certificats numériques du magasin de clés et du trustore, le proxy arrive, mais lorsqu'il obtient quelque chose de la connexion, il donne l'erreur HTTP 403 interdite. Bien sûr, le même consommateur au lieu des paramètres du xmlsoap capturé dans le bean, les paramètres sont pris à partir d'un .property, puis les deux sont les mêmes, mais cela fonctionne. Le service SOAP est appelé via HTTP, car il sera invoqué dans l'intranet, au lieu de cela, le consommateur REST se connecte et est plus sécurisé en raison des besoins du fournisseur.
À ce stade, je ne réalise pas ce qui se passe. Quelqu'un peut-il m'aider? Je vous remercie Salutations

Comment diagnostiquer: erreur 403 d'Ubuntu 16.04 interdite en réponse à GET de updates.drupal.org

Aucun des 3 sites Web Drupal sur ce serveur ne peut afficher les mises à jour disponibles. Le message d'erreur est:

GuzzleHttp Exception ClientException: Erreur du client: GET
http://updates.drupal.org/release-history/addtoany/8.x?site_key=_8FTNSp2dxJwAhgk4-OUW6oti3JrF61GE2q_yozrhak&version=8.x-1.10&list=addtoany
  a abouti à une réponse 403 Forbidden:

Impossible de déterminer comment diagnostiquer cela.

sitemap xml – Obtenir l'erreur HTTP générale: erreur HTTP 403 (interdite) à partir des outils pour les webmasters de Google

Mon site Web est tombé de la carte de Google. J'ai utilisé les outils Google Webmasters pour soumettre mon plan du site et tester avec l'outil de récupération en tant qu'outil Google. Mais recevez les messages suivants:

Erreur HTTP générale: erreur HTTP 403 (interdit)
Erreur HTTP: 403

J'ai utilisé cet outil http://tools.seobook.com/server-header-checker/ pour vérifier mes en-têtes et je reçois HTTP / 1.1 200 OK sur la page de plan du site et la page d'accueil de mon site Web.

Je ne sais pas quoi faire pour résoudre ce problème.

Erreur HTTP publique: erreur HTTP 403 (interdite) Sitemap – Console de recherche [on hold]

Google bot ne rampe pas. Comme Google ne fonctionne pas. plan du site donne une erreur.
Robot.txt clean .htacces clean. n'a pas pu trouver le problème. Le site fonctionne de manière saine. mais il ne peut pas ramper sur google.
URL du site Web: site Web

Console de recherche SS 1
SS 2