javascript
  • ajax
  • web-services
  • cors
  • 2016-05-13 5 views 0 likes 
    0

    困っています。 私はこれを手に入れました。CORSトラブルカントムjquery、laravel5.2

    function soapRequest() 
     
        { 
     
         var soap_str=''; 
     
         soap_str+='<?xml version="1.0" encoding="UTF-8"?>'; 
     
         soap_str+='<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"'; 
     
         soap_str+='xmlns:ns1="https://www.pagofacil.net/st/public/Wsstransaccion/?wsdl"'; 
     
         soap_str+='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'; 
     
         soap_str+='xmlns:xsd="http://www.w3.org/2001/XMLSchema"'; 
     
         soap_str+='xmlns:ns2="http://xml.apache.org/xml-soap"'; 
     
         soap_str+='xmlns:enc="http://www.w3.org/2003/05/soap-encoding">'; 
     
         soap_str+='<env:Body>'; 
     
         soap_str+=' <ns1:transaccion env:encodingStyle="http://www.w3.org/2003/05/soapencoding">'; 
     
         soap_str+=' <param0 xsi:type="ns2:Map"><item><key xsi:type="xsd:string">nombre</key><value xsi:type="xsd:string">Juan A</value></item><item><key xsi:type="xsd:string">apellidos</key>   <value xsi:type="xsd:string">Lopez Hernández</value></item> <item>   <key xsi:type="xsd:string">numeroTarjeta</key>   <value xsi:type="xsd:string">557956789</value>  </item>  <item>   <key xsi:type="xsd:string">cp</key>   <value xsi:type="xsd:string">11560</value>  </item>  <item>   <key xsi:type="xsd:string">cvt</key>   <value xsi:type="xsd:string">123</value>  </item>  <item>   <key xsi:type="xsd:string">monto</key>   <value xsi:type="xsd:string">100</value>  </item>  <item>   <key xsi:type="xsd:string">mesExpiracion</key>   <value xsi:type="xsd:string">10</value>  </item>  <item>   <key xsi:type="xsd:string">anyoExpiracion</key>   <value xsi:type="xsd:string">15</value>  </item>  <item> <key xsi:type="xsd:string">idSucursal</key>   <value xsi:type="xsd:int">1</value>  </item>  <item>   <key xsi:type="xsd:string">idUsuario</key>   <value xsi:type="xsd:int">1</value>  </item>  <item>   <key xsi:type="xsd:string">idServicio</key>   <value xsi:type="xsd:int">3</value>  </item>  <item>   <key xsi:type="xsd:string">telefono</key>   <value xsi:type="xsd:string">5550220910</value>  </item>  <item>   <key xsi:type="xsd:string">celular</key>   <value xsi:type="xsd:string">555</value>  </item>  <item>   <key xsi:type="xsd:string">calleyNumero</key>   <value xsi:type="xsd:string">Anatole France 311</value>  </item>  <item>   <key xsi:type="xsd:string">colonia</key>   <value xsi:type="xsd:string">Polanco</value>  </item>  <item>   <key xsi:type="xsd:string">municipio</key>   <value xsi:type="xsd:string">Miguel Hidalgo</value>  </item>  <item>   <key xsi:type="xsd:string">estado</key>   <value xsi:type="xsd:string">Distrito Federal</value>  </item>  <item>   <key xsi:type="xsd:string">pais</key>   <value xsi:type="xsd:string">Mexico</value>  </item>  <item>   <key xsi:type="xsd:string">email</key>   <value xsi:type="xsd:string">[email protected]</value>  </item>  <item>   <key xsi:type="xsd:string">param1</key>   <value xsi:type="xsd:string"/>  </item>  <item>   <key xsi:type="xsd:string">param2</key>   <value xsi:type="xsd:string">2</value>  </item>  <item> <key xsi:type="xsd:string">param3</key>   <value xsi:type="xsd:string">3</value>  </item>  <item>   <key xsi:type="xsd:string">param4</key>   <value xsi:type="xsd:string"/>  </item>  <item>   <key xsi:type="xsd:string">param5</key>   <value xsi:type="xsd:string"/>  </item>  </param0> '; 
     
         soap_str+='</ns1:transaccion> </env:Body> </env:Envelope>'; 
     
         var str=soap_str; 
     
         function createCORSRequest(method,url) 
     
         { 
     
          var xhr= new XMLHttpRequest(); 
     
          if ("withCredentials" in xhr){ 
     
           xhr.open(method,url,false); 
     
          } 
     
          else 
     
          { 
     
           //CORS not supported 
     
           console.log("CORS not supported"); 
     
           alert("CORS not supported"); 
     
           xhr=null; 
     
          } 
     
          return xhr; 
     
         }   
     
         var xhr= createCORSRequest("POST","https://www.pagofacil.net/st/public/Wsstransaccion/"); 
     
         
     
         alert(xhr); 
     
         
     
         if(!xhr) 
     
         { 
     
          console.log("xhr issues"); 
     
          return; 
     
         } 
     
    
     
         xhr.onload = function() 
     
         { 
     
          var results = xhr.responseText; 
     
          console.log(results); 
     
         } 
     
    
     
         xhr.setRequestHeader('Content-Type','text/xml'); 
     
         xhr.setRequestHeader("Access-Control-Allow-Origin","http://localhost:8000/");  
     
         alert(str); 
     
         xhr.send(str); 
     
        } 
     
        soapRequest();

    私は、次のエラーを得ました。 1レジスタ:895オプションpagofacil.net/st/public/Wsstransaccion/ 500(内部サービスエラー) 2レジスタ:895 XMLHttpRequestはpagofacil.net/st/public/Wsstransaccion/をロードできません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。 Origin 'http://localhost:8000'はアクセスできません。応答にHTTPステータスコード500がありました。 3レジスタ:895 Uncaught NetworkError: 'XMLHttpRequest'で 'send'を実行できませんでした: 'pagofacil.net/st/public/Wsstransaccion/'を読み込めませんでした。

    私はREST、JSON Postを試しましたが、SOAPと同じCORSの問題がありました。 私はmozillaではCORSセキュリティオプションを無効にしようとしましたが、仕事はしませんでした(同じエラー)。

    私はここで解決策を探していませんが、どこで探すことができますか? ありがとうございます。

    更新16-05-2016 このツールが見つかりました。これについての情報があります。 https://www.pagofacil.net/st/public/Wsrtransaccion/index/format/json?method=transaccion&data[nombre]=Juan&data[apellidos]=Lopez&data[numeroTarjeta]=557956789&data[cvt]=123&data[cp]=11560&data[mesExpiracion]=10&data[anyoExpiracion]=18&data[monto]=6&data[idSucursal]=60f961360ca187d533d5adba7d969d6334771370&data[idUsuario]=62ad6f592ecf2faa87ef2437ed85a4d175e73c58&data[idServicio]=3&data[email][email protected]&data[telefono]=5550220910&data[celular]=555&data[calleyNumero]=AnatoleFrance311&data[colonia]=Polanco&data[municipio]=Migueldalgo&data[estado]=DistritoFederal&data[pais]=Mexico

    短期的に言えば、pagofacil.netサーバーはCORSを許可しません。

    答えて

    0

    私は、サーバーがOPTIONS要求を許可しないという理由がCORSを許可しないことを示していると思います。私はCORSが有効になっているサーバーを持っているとcurl 'https://...myserver.../' -I -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://localhost:8000/' を実行すると、次のヘッダーを返します。

    HTTP/1.1 200 OK 
    Content-Length: 0 
    Server: Microsoft-IIS/7.0 
    Access-Control-Allow-Origin: * 
    X-Powered-By: ASP.NET 
    Date: Sat, 14 May 2016 07:06:00 GMT 
    Set-Cookie: SERVERID=mon03; path=/ 
    Cache-control: private 
    

    これは基本的に、「あなたは任意の起源からのPOSTリクエストを行うことができます」と述べています。サーバーcurl 'https://www.pagofacil.net/st/public/Wsstransaccion/' -I -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://localhost:8000/'

    に対して同じcurlコマンドを発行

    が...

    HTTP/1.1 500 Internal Service Error 
    Date: Sat, 14 May 2016 07:06:09 GMT 
    Server: Apache/2.2.3 (Red Hat) 
    X-Powered-By: PHP/5.2.17 
    Content-Length: 269 
    X-XSS-Protection: 1; mode=block 
    X-Content-Type-Options: nosniff 
    Connection: close 
    Content-Type: text/xml; charset=utf-8 
    

    を返す「内部サービスエラーは、」あなたはOPTIONS要求を行うことができませんので、あなたがCORS要求を行うことができないことを示していますあなたはしようとしている。

    サーバーでCORSが許可されていない場合は、CORSを有効にすることを要求するか、CORSを有効にする独自のプロキシサーバーを使用して呼び出しをルーティングする以外は、あまりできません。このサーバはpagofacilへのリクエストを行い、あなたにデータを返すことができます。

    +0

    ありがとうございました。サードパーティの会社と間違って確認しました。 –

    関連する問題