Vinnaren i pepparkakshustävlingen!
2017-08-17, 21:10
  #1
Medlem
Osäker på om jag måste tänka helt om.
Det finns en tjänst som returnerar XML.
Jag vill kunna köra en lokal html-fil som hämtar ut och parsar innehållet på sidan men sliter med CORS som alla andra, förstår inte hur svårt det ska vara.

Jag har inte tillgång till servern som tjänsten kör på eller domänet så kan inte göra något där. Behöver kunna skapa en simpel sida som jag kan ge till ett par personer så bör vara så simpelt som en html-fil. Inte möjligt?
Citera
2017-08-19, 09:50
  #2
Medlem
Om du ska hosta sidan som dessa personer ska använda och att tjänsten är av sån karaktär att det fungerar så finns det en enkel lösning och det är att tanka hem XML:en som tjänsten returnerar via PHP eller annat serversidespråk och sen använda den lokala filen vid presentationen.

Edit:
Nu ser jag att du skrivit localhost så html-filen ska nog köras lokalt på flera olika datorer, men då kan du själv hosta XML-filen åt dessa personer och tillåta deras anrop.
__________________
Senast redigerad av e7andy 2017-08-19 kl. 09:53.
Citera
2017-08-19, 13:42
  #3
Medlem
edm4lifes avatar
Först och främst, kör inte din html-fil direkt från filsystemet. Om du använder nodeJS eller pallar sätta upp det som en enkel webbserver så finns det ett npm package du kan installera som öppnar upp alla CORS requests:

https://www.npmjs.com/package/cors
Citera
2017-08-19, 20:30
  #4
Medlem
lasternassummas avatar
Citat:
Ursprungligen postat av uffe98
Osäker på om jag måste tänka helt om.
Det finns en tjänst som returnerar XML.
Jag vill kunna köra en lokal html-fil som hämtar ut och parsar innehållet på sidan men sliter med CORS som alla andra, förstår inte hur svårt det ska vara.

Jag har inte tillgång till servern som tjänsten kör på eller domänet så kan inte göra något där. Behöver kunna skapa en simpel sida som jag kan ge till ett par personer så bör vara så simpelt som en html-fil. Inte möjligt?

– Hur tillförlitlig är servern som du hämtar XML från?
– Hur tillförlitligt vill du att din sida ska vara?
– Hur ofta ändras XML-data?

Lite beroende på svaren på dessa frågor skulle jag göra ungefär så här:
– Hämta XML-data och spar dom lokalt, t.ex. var tionde minut, beroende på hur ofta data uppdateras. Kan göras per ett PHP-skript som körs med cron.

Lös din sida med ett PHP-skript, som föreslogs. Om XML-data kan hämtas, använd dessa data. Använd annars lagrade data och ange när dom hämtades från servern.

Det finns bra hjälp till PHP för att parsa XML. PHP SimpleXML Parser, t.ex. är inbyggt i PHP.

Citera
2017-08-20, 17:59
  #5
Medlem
Du kan komma runt CORS genom att först hämta XML-filen med typ Python och sedan hosta filen själv till de klienter som ska hämta den.
Citera
2017-08-20, 23:44
  #6
Medlem
Hm okej,
XML-sidan är inte public och man gör uppslag på olika ID'n.
Idag så sitter folk och manuellt byter id i URL'en för att sen leta fram info i xml'en.

Flyten idag;
1. 'ska checka x på produkt y med id z'
2. går till http://example.com?id=z
3. ctrl+f sök på sidan efter x
4. ok allt bra

Min tanke på en sida som ska visa det som 99 gånger av 100 är vad man är ute efter
1. Simpelt inputfält där du kan skriva in id
2. får tillbaka typ;
- har funktion x
- har inte funktion y
- har funktion z

Servern som hostar XML'en har jag inte tillgång till.
XML uppdateras konstant på de olika produkterna.
Varje XML är 100-300 rader.
Det finns troligtvis 100k+ produkter i lösningen.
Tänkte bara göra det så enkelt som möjligt så simpel HTML/JS-sida som jag bara kan ge till de jag vill. Vill inte lägga så mycket tid på det som att få fixat med node/python lokalt hos de jag tänker ge html-filen till.

Men så stötte jag ju på CORS-problematiken och förstår inte varför det ska vara så svårt att få till med JS.
Citera
2017-08-21, 10:46
  #7
Medlem
lasternassummas avatar
Citat:
Ursprungligen postat av uffe98
Hm okej,
XML-sidan är inte public och man gör uppslag på olika ID'n.
Idag så sitter folk och manuellt byter id i URL'en för att sen leta fram info i xml'en.

Flyten idag;
1. 'ska checka x på produkt y med id z'
2. går till http://example.com?id=z
3. ctrl+f sök på sidan efter x
4. ok allt bra

Min tanke på en sida som ska visa det som 99 gånger av 100 är vad man är ute efter
1. Simpelt inputfält där du kan skriva in id
2. får tillbaka typ;
- har funktion x
- har inte funktion y
- har funktion z

Servern som hostar XML'en har jag inte tillgång till.
XML uppdateras konstant på de olika produkterna.
Varje XML är 100-300 rader.
Det finns troligtvis 100k+ produkter i lösningen.
Tänkte bara göra det så enkelt som möjligt så simpel HTML/JS-sida som jag bara kan ge till de jag vill. Vill inte lägga så mycket tid på det som att få fixat med node/python lokalt hos de jag tänker ge html-filen till.

Men så stötte jag ju på CORS-problematiken och förstår inte varför det ska vara så svårt att få till med JS.

Jag gör ett försök att beskriva vad du vill göra, så får du berätta om jag uppfattat korrekt.

Du finns i ett nätverk i en organisation. En intern http-server kan via en url, ungefär

http://xmlserver.domainname.se?id=x

nås. Den levererar då ca 100-300 rader XML med information om produkten x.

Du kan hämta data från XML-servern, men du kan inte göra någon programmering på den.
Du kan inte sätta upp en lokal server på nätverket som gör det du vill genom att hämta data från XML-servern. Det finns inte heller någon befintlig server som du kan lägga in en lösning på.

Du vill skriva en eller ett par HTML/Javascript-sida/sidor som lagras lokalt på användarnas datorer som visar ett formulär där användarna fyller i produkt-id och trycker på knappen "hämta".

Då får du upp information om produkten på skärmen.

Eventuellt väljer du i formuläret vilken data om aktuell produkt du vill ha.

Vill du ha upp XML-informationen som den är eller vill du presentera den på ett mer användarvänligt sätt?

Hur många är det som ska hämta data? Är det rimligt att lägga in din lösning på var och en av dessa användares datorer eller borde lösningen finnas på en server på nätet?

Här finns lite om hur man kan parsa XML med javascript:

https://www.w3schools.com/xml/xml_parser.asp

Citera
2017-08-21, 20:11
  #8
Medlem
Citat:
Ursprungligen postat av uffe98
Hm okej,
XML-sidan är inte public och man gör uppslag på olika ID'n.
Idag så sitter folk och manuellt byter id i URL'en för att sen leta fram info i xml'en.

Flyten idag;
1. 'ska checka x på produkt y med id z'
2. går till http://example.com?id=z
3. ctrl+f sök på sidan efter x
4. ok allt bra

Min tanke på en sida som ska visa det som 99 gånger av 100 är vad man är ute efter
1. Simpelt inputfält där du kan skriva in id
2. får tillbaka typ;
- har funktion x
- har inte funktion y
- har funktion z

Servern som hostar XML'en har jag inte tillgång till.
XML uppdateras konstant på de olika produkterna.
Varje XML är 100-300 rader.
Det finns troligtvis 100k+ produkter i lösningen.
Tänkte bara göra det så enkelt som möjligt så simpel HTML/JS-sida som jag bara kan ge till de jag vill. Vill inte lägga så mycket tid på det som att få fixat med node/python lokalt hos de jag tänker ge html-filen till.

Men så stötte jag ju på CORS-problematiken och förstår inte varför det ska vara så svårt att få till med JS.

Mig veterligen finns det inget bra sätt att kringgå CORS om du prompt ska hämta en resurs med JavaScript. Jag har läst någonstans att man kan stänga av något i webbläsaren, men det öppnar upp mängder med säkerhetshål för den som använder webbläsaren. Det är alltså inte att rekommendera.

Jag rekommenderar att du själv sätter upp en server där du tillhandahåller t.ex. ett REST-API som i sin tur pratar med en Python-backend som hämtar XML-filen och serveras till användaren genom dig. På så vis kan du själv tillåta CORS-requests. Har du ingen kontroll på servern så går detta inte att göra (igen, mig veterligen).
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback