CORS问题无法解析jquery,laravel 5.2
Posted
技术标签:
【中文标题】CORS问题无法解析jquery,laravel 5.2【英文标题】:CORS trouble cant solve jquery, laravel5.2 【发布时间】:2016-09-10 02:20:15 【问题描述】:我有麻烦了。 我明白了。
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">5579567890123456</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">5550123456</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">comprador@correo.com</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-register:895 OPTIONS pagofacil.net/st/public/Wsstransaccion/500(内部服务错误) 2-register:895 XMLHttpRequest 无法加载 pagofacil.net/st/public/Wsstransaccion/。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:8000' 不允许访问。响应的 HTTP 状态代码为 500。 3-register:895 Uncaught NetworkError: 无法在“XMLHttpRequest”上执行“发送”:无法加载“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]=5579567890123456&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]=gadlapaz@hotmail.com&data[telefono]=5550220910&data[celular]=5550123456&data[calleyNumero]=AnatoleFrance311&data[colonia]=Polanco&data[municipio]=Migueldalgo&data[estado]=DistritoFederal&data[pais]=Mexico
简而言之,pagofacil.net 服务器不允许 CORS。
【问题讨论】:
【参考方案1】:我认为原因是服务器不允许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 命令curl 'https://www.pagofacil.net/st/public/Wsstransaccion/' -I -X OPTIONS -H 'Access-Control-Request-Method: POST' -H 'Origin: http://localhost:8000/'
...返回
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)路由您的呼叫外,您无能为力。然后该服务器可以向pagofacil
发出请求并将数据返回给您。
【讨论】:
非常感谢,请与第三方公司核实。以上是关于CORS问题无法解析jquery,laravel 5.2的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Sanctum + Nuxt JS 我无法通过 CORS
Laravel cors 无法在 Apache 服务器上运行
Laravel 5 CORS - XMLHttpRequest 无法加载 http://myapi.com。预检响应具有无效的 HTTP 状态代码 500
XMLHttprequest 无法加载 [link]。从 [link] 重定向到已被 laravel 5 中的 CORS 策略阻止