praegune kellaaeg 18.06.2025 01:30:50
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
eternity
HV kasutaja
liitunud: 20.11.2008
|
15.01.2015 16:39:04
Ajax cross domain request |
|
|
Tere, mure siis järgmine:
Kliendi poolelt saadetakse form data jquery abil POSTiga siis vastuvõtvasse api serverisse, mis asub mujal ja millele ligpääsuks on vaja läbida basic auth.
Probleem tuleb mängu siis kui tahta lisada auth info headerisse, sest peale seda hakkab ta tegema preflight requesti serverile ennem õiget requesti.
Kuna aga preflight requestile auth headereid ei lisa, siis lükkab api requesti tagas erroriga No acces-control-allow-origin header was present ja katkestab autendi.
Selle peale sai ka küsitud serverihaldajalt, kas serveri confis on välised ühendused lubatud ja nende sõnul peaks sealtpoolt asi korras olema.
Probleem on ka selles, et ise serverile ligipääsu ei oma nii, et midagi sealtpoolt muuta ei saa.
Küsimus seisneb nüüd seisnebki selles, et kas on võimalik preflighti ise autentida kuidagimoodi või siis preflighti bypassida kuidagi (mis ei oleks proxy põhine lahendus ja mitte ka jsonp kuna on vaja POSTi kasutada)?
Igasugune abi oleks teretulnud.
Client-side ajax string on selline:
$(document).ready(function () {
var options = {
target: '#response',
success: showResponse,
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', "Basic xxxxxxxxx");
xhr.setRequestHeader("Content-Type", "multipart/form-data");
},
xhrFields: {
withCredentials: true
},
contentType: 'multipart/form-data',
url: 'targeturl',
type: 'post',
crossDomain: true,
cache: false,
async: false;
dataType: 'json'
};
$('#myForm2').submit(function () {
$(this).ajaxSubmit(options);
return false;
});
});
|
|
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
30 |
|
tagasi üles |
|
 |
Redikate
HV veteran

liitunud: 30.12.2005
|
15.01.2015 16:58:41
|
|
|
Puhtalt API konfimise teema. Ainuke asi mida sina teha saaks, oleks proxyda.
Nemad peavad CORS'i confima tööle ka OPTIONS requesti jms asjadega, siis ongi timm.
Access-Control-Allow-Methods: POST, GET, OPTIONS |
Ma selle probleemi otsa astusin, siis lahendasin selle expressJS'iga ise proxy tehes. Vabalt võib ka muidugi nginx jms kasutada.
Seda mis API'st täpselt puudu on, peaksid nägema requestist. Access-Control headerid ja nende väärtused peavad sulle sealt vastu tulema.
_________________ http://nodejs.org/
"I'm also a person. Programming is just one thing I do."
viimati muutis Redikate 15.01.2015 17:06:17, muudetud 2 korda |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
33 |
|
tagasi üles |
|
 |
eternity
HV kasutaja
liitunud: 20.11.2008
|
15.01.2015 17:03:33
|
|
|
Tänud vastuse eest.
Eks ma ürita seda siis serverihaldajale selgeks teha.
|
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
30 |
|
tagasi üles |
|
 |
Redikate
HV veteran

liitunud: 30.12.2005
|
15.01.2015 17:10:37
|
|
|
Korra veel läbi lugedes, tundub et API's on hoopis OPTIONS valesti confitud. OPTIONS req ei tohiks olla basic authitud, sest W3C spec ütleb, et preflightiga ei panda authi kaasa.
Seega browser lihtsalt ei saada authorization headerit kaasa ja seega ka auth failib.
_________________ http://nodejs.org/
"I'm also a person. Programming is just one thing I do." |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
33 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|