Versions de langue/outil:
Problème:
J'ai une application Angular2 qui utilise une application PHP comme API pour toutes les requêtes XHR. L'application fonctionne correctement mais lorsque l'option Use a prediction service to load pages more quickly
Est activée dans Chrome et lorsque le l'application est rechargée Les requêtes HTTP envoyées à l'intérieur de ngOnInit()
du composant sont bloquées très longtemps. Soit la requête se résoudra d'elle-même après 10s-2-3 minutes, etc. ou la ou les requêtes seront également résolues si j'envoie une autre demande (par exemple, une demande lors d'un événement de clic sur le DOM)
Choses que j'ai essayées:
GET
échouée, puis attendra, une fois la résolution terminée, il y aura une demande OPTIONS
réussie, puis une GET
réussie.http://api.randomuser.me/
plutôt que de demander mon point de terminaison d'API. Dans ce cas, la demande réussit sans délai (bien qu'elle affiche des erreurs CORS). Je pense donc que le problème réside dans mon API principale ou le serveur Web Apache.Je voudrais également partager ma configuration d'hôte virtuel. Si vous rencontrez des problèmes:
<VirtualHost *:80>
ServerName someName.api
DocumentRoot path_to_public_dir
SetEnv APPLICATION_ENV development
<Directory path_to_public_dir>
SetEnvIf Origin "http(s)?://(www\.)?(local\.)?(localhost:4200|someDomain.com)$" AccessControlAllowOrigin=$0
Header always set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} –d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Options -Indexes +MultiViews +FollowSymLinks
AllowOverride none
Order Allow,Deny
Allow from all
</Directory>
Notez s'il vous plaît:
Access-Control-Allow-Origin
Dans l'application elle-même, mais toujours pas de chance.Vos suggestions/réponses sur quelles pourraient être les causes possibles d'un tel comportement seraient vraiment utiles.
Eh bien, je pense que faire ce qui suit a supprimé le décalage de ma machine.
Avant la solution, voici mes hypothèses:
Solution:
J'ai inclus le fichier de modules mpm
pour Apache. Vous pouvez trouver la ligne ci-dessous dans le fichier httpd.conf
:
#Include conf/extra/httpd-mpm.conf
Et décommentez-le.
Windows utilise le mpm_winnt_module pour mpm.
Ce module multi-traitement (MPM) est la valeur par défaut pour les systèmes d'exploitation Windows NT. Il utilise un seul processus de contrôle qui lance un seul processus enfant qui à son tour crée des threads pour gérer les demandes
Trouvez les lignes ci-dessous et décommentez-les:
EnableMMAP off
EnableSendfile on
AcceptFilter http none
AcceptFilter https none
#Extra Notes
#mmap is memory map by Apache, don't know I have uncommented this, had read about
this somewhere, but anyway its Off so should not be a Burden on OS
#EnableSendFile:Delivering static files? This link may help:
https://groups.drupal.org/node/68333
#AcceptFilter: windows mpm module, suggests to keep it as none.
I went through this : https://httpd.Apache.org/docs/2.4/mod/core.html
and have set AcceptFilter http/https as "connect", it works fine for me.
Please note: I am using Apache 2.4.23
C'est ça!
Je laisse cette question non acceptée car:
winnt
, je n'ai trouvé le fichier de module nulle part dans mon répertoire Apache, bien que les changements dans ThreadsPerChild soient reflétés, je suppose qu'Apache n'a pas besoin d'un module externe winnt
.failed and finshed
Entrelacées pour chaque demande dans ma console chrome.Vos réponses seront vraiment précieuses et rendront les choses plus claires.
Ce problème se produit en raison de votre vitesse Internet lente. Lorsque onInit () appelle, il charge tous les services Web et attend la fin du premier service Web. Lorsque l'exécution du premier service est terminée, le deuxième service commencera à s'exécuter mais il était toujours en attente par conséquent, il vous montre "En attente" dans la colonne d'état du réseau