IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Requête Curl fonctionne en local mais pas sur serveur distant


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut Requête Curl fonctionne en local mais pas sur serveur distant
    Bonjour,

    Je travaille sur deux serveurs (admettons A et B), j'ai développé un petit script php qui envoie une requête POST Curl vers A.

    Quand je la lance sur le serveur A, tout fonctionne très bien.

    Mais lorsque je copie/colle ma requête POST Curl sur mon serveur B (avec la même cible, soit une url pointant sur mon serveur A), j'ai une erreur 404:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Not Found
     
    The requested URL /mon/path was not found on this server.
    Apache/2.2.16 (Debian) Server at mon_site_B.com Port 80
    int(1)
    Je suppose qu'il y a une configuration à appliquer dans le fichier php.ini pour autoriser les requêtes Curl des serveurs distants...?

    J'aurais bien aimé pouvoir gérer au cas par cas grâce à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Access-Control-Allow-Origin: externalwebsite.com");
    mais je ne vois pas comment faire étant donné que le serveur rejette directement la requête.

    Merci pour le coup de main !

    EDIT:

    Je précise que quand j'entre l'URL dans mon browser, j'accède bien à la page...

    Cela vient peut-être de ma configuration apache22 ou de mon .htaccess, voici son contenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    # ----------------------------------------------------------------------
    # Cross-domain AJAX requests
    # ----------------------------------------------------------------------
     
    # Serve cross-domain ajax requests, disabled.   
    # enable-cors.org
    # code.google.com/p/html5security/wiki/CrossOriginRequestSecurity
     
    #  <IfModule mod_headers.c>
    #    Header set Access-Control-Allow-Origin "*"
    #  </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # Webfont access
    # ----------------------------------------------------------------------
     
    # Allow access from all domains for webfonts.
    # Alternatively you could only whitelist your
    # subdomains like "sub.domain.com".
     
    <FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
      <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "*"
      </IfModule>
    </FilesMatch>
     
     
     
    # ----------------------------------------------------------------------
    # Proper MIME type for all files
    # ----------------------------------------------------------------------
     
    # Audio
    AddType audio/ogg                      oga ogg
    AddType audio/mp4                      m4a
     
    # Video
    AddType video/ogg                      ogv
    AddType video/mp4                      mp4 m4v
    AddType video/webm                     webm
     
    # Proper svg serving. Required for svg webfonts on iPad
    #   twitter.com/FontSquirrel/status/14855840545
    AddType     image/svg+xml              svg svgz 
    AddEncoding gzip                       svgz
     
    # Webfonts                             
    AddType application/vnd.ms-fontobject  eot
    AddType font/truetype                  ttf
    AddType font/opentype                  otf
    AddType application/x-font-woff        woff
     
    # Assorted types                                      
    AddType image/x-icon                   ico
    AddType image/webp                     webp
    AddType text/cache-manifest            appcache manifest
    AddType text/x-component               htc
    AddType application/x-chrome-extension crx
    AddType application/x-xpinstall        xpi
    AddType application/octet-stream       safariextz
    AddType text/x-vcard                   vcf
     
     
     
    # ----------------------------------------------------------------------
    # Allow concatenation from within specific js and css files 
    # ----------------------------------------------------------------------
     
    # e.g. Inside of script.combined.js you could have
    #   <!--#include file="libs/jquery-1.5.0.min.js" -->
    #   <!--#include file="plugins/jquery.idletimer.js" -->
    # and they would be included into this single file.
     
    # This is not in use in the boilerplate as it stands. You may
    # choose to name your files in this way for this advantage or
    # concatenate and minify them manually.
    # Disabled by default.
     
    # <FilesMatch "\.combined\.(js|css)$">
    #         Options +Includes
    #         SetOutputFilter INCLUDES
    # </FilesMatch>
     
     
     
    # ----------------------------------------------------------------------
    # Gzip compression
    # ----------------------------------------------------------------------
     
    <IfModule mod_deflate.c>
     
    # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s,?\s(gzip|deflate)?|X{4,13}|~{4,13}|-{4,13})$ HAVE_Accept-Encoding
        RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
      </IfModule>
    </IfModule>
     
    # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
    <IfModule filter_module>
      FilterDeclare   COMPRESS
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type /text/(html|css|javascript|plain|x(ml|-component))/
      FilterProvider  COMPRESS  DEFLATE resp=Content-Type /application/(javascript|json|xml|x-javascript)/
      FilterChain     COMPRESS
      FilterProtocol  COMPRESS  change=yes;byteranges=no
    </IfModule>
     
    <IfModule !mod_filter.c>
      # Legacy versions of Apache
      AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
      AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript 
      AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
    </IfModule>
     
    # Webfonts and SVG:
      <FilesMatch "\.(ttf|otf|eot|svg)$" >
        SetOutputFilter DEFLATE
      </FilesMatch>
    </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # Expires headers (for better cache control)
    # ----------------------------------------------------------------------
     
    # These are pretty far-future expires headers.
    # They assume you control versioning with cachebusting query params like
    #   <script src="application.js?20100608">
    # Additionally, consider that outdated proxies may miscache 
    #   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
     
    # If you don't use filenames to version, lower the CSS  and JS to something like
    #   "access plus 1 week" or so.
     
    <IfModule mod_expires.c>
      ExpiresActive on
     
    # Perhaps better to whitelist expires rules? Perhaps.
      ExpiresDefault                          "access plus 1 month"
     
    # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
      ExpiresByType text/cache-manifest       "access plus 0 seconds"
     
    # Your document html 
      ExpiresByType text/html                 "access plus 0 seconds"
     
    # Data
      ExpiresByType text/xml                  "access plus 0 seconds"
      ExpiresByType application/xml           "access plus 0 seconds"
      ExpiresByType application/json          "access plus 0 seconds"
     
    # RSS feed
      ExpiresByType application/rss+xml       "access plus 1 hour"
     
    # Favicon (cannot be renamed)
      ExpiresByType image/x-icon              "access plus 1 week" 
     
    # Media: images, video, audio
      ExpiresByType image/gif                 "access plus 1 month"
      ExpiresByType image/png                 "access plus 1 month"
      ExpiresByType image/jpg                 "access plus 1 month"
      ExpiresByType image/jpeg                "access plus 1 month"
      ExpiresByType video/ogg                 "access plus 1 month"
      ExpiresByType audio/ogg                 "access plus 1 month"
      ExpiresByType video/mp4                 "access plus 1 month"
      ExpiresByType video/webm                "access plus 1 month"
     
    # HTC files  (css3pie)
      ExpiresByType text/x-component          "access plus 1 month"
     
    # Webfonts
      ExpiresByType font/truetype             "access plus 1 month"
      ExpiresByType font/opentype             "access plus 1 month"
      ExpiresByType application/x-font-woff   "access plus 1 month"
      ExpiresByType image/svg+xml             "access plus 1 month"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
     
    # CSS and JavaScript
      ExpiresByType text/css                  "access plus 1 year"
      ExpiresByType application/javascript    "access plus 1 year"
      ExpiresByType text/javascript           "access plus 1 year"
     
      <IfModule mod_headers.c>
        Header append Cache-Control "public"
      </IfModule>
     
    </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # ETag removal
    # ----------------------------------------------------------------------
     
    # FileETag None is not enough for every server.
    <IfModule mod_headers.c>
      Header unset ETag
    </IfModule>
     
    # Since we're sending far-future expires, we don't need ETags for
    # static content.
    #   developer.yahoo.com/performance/rules.html#etags
    FileETag None
     
     
    # ----------------------------------------------------------------------
    # Cookie setting from iframes
    # ----------------------------------------------------------------------
     
    # Allow cookies to be set from iframes (for IE only)
    # If needed, uncomment and specify a path or regex in the Location directive
     
    # <IfModule mod_headers.c>
    #   <Location />
    #     Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
    #   </Location>
    # </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # Start rewrite engine
    # ----------------------------------------------------------------------
     
    # Turning on the rewrite engine is necessary for the following rules and features.
    # FollowSymLinks must be enabled for this to work.
     
    <IfModule mod_rewrite.c>
      Options +FollowSymlinks
      RewriteEngine On
    </IfModule>
     
    # ----------------------------------------------------------------------
    # Suppress or force the "www." at the beginning of URLs
    # ----------------------------------------------------------------------
     
    <IfModule mod_rewrite.c>
      RewriteCond %{HTTPS} !=on
      RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
      RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ /index.php/$1 [L]
    </IfModule>
     
    # ----------------------------------------------------------------------
    # Built-in filename-based cache busting
    # ----------------------------------------------------------------------
     
    # If you're not using the build script to manage your filename version revving,
    # you might want to consider enabling this, which will route requests for
    # /css/style.20110203.css to /css/style.css
     
    # To understand why this is important and a better idea than all.css?v1231,
    # read: github.com/paulirish/html5-boilerplate/wiki/Version-Control-with-Cachebusting
     
    # Uncomment to enable.
    # <IfModule mod_rewrite.c>
    #   RewriteCond %{REQUEST_FILENAME} !-f
    #   RewriteCond %{REQUEST_FILENAME} !-d
    #   RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
    # </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # Prevent SSL cert warnings
    # ----------------------------------------------------------------------
     
    # Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
    # https://www.domain.com when your cert only allows https://secure.domain.com
    # Uncomment the following lines to use this feature.
     
    # <IfModule mod_rewrite.c>
    #   RewriteCond %{SERVER_PORT} !^443
    #   RewriteRule (.*) https://example-domain-please-change-me.com/$1 [R=301,L]
    # </IfModule>
     
     
     
    # ----------------------------------------------------------------------
    # Prevent 404 errors for non-existing redirected folders
    # ----------------------------------------------------------------------
     
    # without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist 
    #   e.g. /blog/hello : webmasterworld.com/apache/3808792.htm
     
    Options -MultiViews 
     
     
     
    # ----------------------------------------------------------------------
    # Custom 404 page
    # ----------------------------------------------------------------------
     
    # You can add custom pages to handle 500 or 403 pretty easily, if you like.
    ErrorDocument 404 /404.html
     
     
     
    # ----------------------------------------------------------------------
    # UTF-8 encoding
    # ----------------------------------------------------------------------
     
    # Use UTF-8 encoding for anything served text/plain or text/html
    AddDefaultCharset utf-8
     
    # Force UTF-8 for a number of file formats
    AddCharset utf-8 .html .css .js .xml .json .rss
     
     
     
    # ----------------------------------------------------------------------
    # A little more security
    # ----------------------------------------------------------------------
     
     
    # Do we want to advertise the exact version number of Apache we're running?
    # Probably not.
    ## This can only be enabled if used in httpd.conf - It will not work in .htaccess
    # ServerTokens Prod
     
     
    # "-Indexes" will have Apache block users from browsing folders without a default document
    # Usually you should leave this activated, because you shouldn't allow everybody to surf through
    # every folder on your server (which includes rather private places like CMS system folders).
    Options -Indexes
     
     
    # Block access to "hidden" directories whose names begin with a period. This
    # includes directories used by version control systems such as Subversion or Git.
    <IfModule mod_rewrite.c>
      RewriteRule "(^|/)\." - [F]
    </IfModule>
     
     
    # If your server is not already configured as such, the following directive
    # should be uncommented in order to set PHP's register_globals option to OFF.
    # This closes a major security hole that is abused by most XSS (cross-site
    # scripting) attacks. For more information: http://php.net/register_globals
    #
    # IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
    #
    # Your server does not allow PHP directives to be set via .htaccess. In that
    # case you must make this change in your php.ini file instead. If you are
    # using a commercial web host, contact the administrators for assistance in
    # doing this. Not all servers allow local php.ini files, and they should
    # include all PHP configurations (not just this one), or you will effectively
    # reset everything to PHP defaults. Consult www.php.net for more detailed
    # information about setting PHP directives.
     
    # php_flag register_globals Off
     
    # Rename session cookie to something else, than PHPSESSID
    # php_value session.name sid
     
    # Do not show you are using php
    # php_flag expose_php Off
     
    # Level of log detail - log all errors
    # php_value error_reporting -1
     
    # Write errors to log file
    # php_flag log_errors On
     
    # Do not display errors in browser (production - Off, development - On)
    # php_flag display_errors On
     
    # Do not display startup errors (production - Off, development - On)
    # php_flag display_startup_errors On
     
    # Format errors in plain text
    # php_flag html_errors Off
     
    # Show multiple occurrence of error
    # php_flag ignore_repeated_errors Off
     
    # Show same errors from different sources
    # php_flag ignore_repeated_source Off
     
    # Size limit for error messages
    # php_value log_errors_max_len 1024
     
    # Don't precede error with string (doesn't accept empty string, use whitespace if you need)
    # php_value error_prepend_string " "
     
    # Don't prepend to error (doesn't accept empty string, use whitespace if you need)
    # php_value error_append_string " "
     
    # Increase cookie security
    <IfModule php5_module>
    	php_value session.cookie_httponly true
    </IfModule>

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Je n'ais plus la possibilité d'éditer ce message, je me permet donc d'ajouter du contenu car je reste en difficulté, voici la réponse que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HTTP/1.1 100 Continue HTTP/1.1 404 Not Found Date: Tue, 29 May 2012 08:30:29 GMT Server: Apache/2.2.16 (Debian) Vary: Accept-Encoding Content-Length: 301 Content-Type: text/html; charset=iso-8859-1
    avec la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, 'http://monsite.com/path');
    curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_DNS_USE_GLOBAL_CACHE, FALSE);
    curl_setopt($c, CURLOPT_HEADER, true);
    curl_setopt($c, CURLOPT_POST, true);
    curl_setopt($c, CURLOPT_POSTFIELDS, $params);
    $buffer = curl_exec($c);
    Je ne peux pas non plus faire un moindre file_get_contents() depuis un serveur distant du serveur A vers B.

    En revanche, cela fonctionne de B vers A, le serveur A (monsite.com) doit donc avoir une configuration bloquante dans apache2, mais je ne trouve rien !

Discussions similaires

  1. [MySQL] Requête DELETE fonctionne en local mais pas sur le serveur
    Par abc.xyz dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/07/2015, 11h08
  2. URL rewriting fonctionne en local mais pas sur serveur
    Par CinePhil dans le forum Apache
    Réponses: 2
    Dernier message: 06/11/2011, 15h16
  3. [MySQL] delete fonctionnant en local mais pas sur site distant
    Par dabac dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 04/11/2010, 22h13
  4. [MooTools] AJAX fonctionne en local mais pas sur serveur
    Par LionL dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 07/12/2007, 22h52
  5. AJAX : Fonctionne en local mais pas sur serveur distant ?
    Par jejefeds dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/06/2007, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo