has been blocked by CORS policy

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Front end developer React

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

Bekijk vacature »

Back-end ontwikkelaar

Functie omschrijving Wil jij meebouwen aan diverse databasesystemen in een klein bedrijf met een platte organisatie? In een team van ruim 10 ontwikkelaars wordt er aan diverse ICT oplossingen gewerkt. Jouw taken hierbij zullen bestaan uit: Het onderhouden en door-ontwikkelen van bestaande databases. Denk hierbij aan schema verbeteringen en performance-tuning. Bij nieuwe ontwikkelingen ga jij ook bezig met het bouwen van het databaseschema. Omdat je in een klein team werkt zal je ook de C# routine verder uitbouwen en ontwikkelen. Ook kan je meedraaien in algemene refactory-, ontwikkel- of testwerkzaamheden. Je zal voornamelijk gebruik maken van de volgende technieken: .NET

Bekijk vacature »

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

Software Developer (Junior functie)

Functieomschrijving Wij zijn op zoek naar een Software Developer! Sta jij in de startblokken om je carrière te beginnen en kan je niet wachten om toffe software te gaan ontwikkelen? Kortom, ben je onlangs afgestudeerd of sta je op het punt om je papiertje te behalen? Voor een IT dienstverlener dat gespecialiseerd is in Microsoft technologie zijn wij op zoek naar C#.NET Developers. Het bedrijf heeft meerdere klanten in regio Utrecht waar je permanent kan komen te werken. Kom je liever te werken bij een klein softwarebedrijf of bij een groot consultancy bureau? Dat is helemaal aan jou de keuze!

Bekijk vacature »

Fullstack Software Developer

Functieomschrijving Voor een ambitieuze werkgever in regio Roosendaal zijn wij op zoek naar een Full Stack C#.NET Developer. Als software programmeur ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Verder ontwikkelen en onderhouden van webapplicaties, dashboards en apps voor de eigen IOT-oplossingen; Testen en goedkeuren van de software; Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks,

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

Software Developer

Functie omschrijving In deze functie ga je aan de slag met het door ontwikkelen van de interne software. Zij maken gebruik van een CRM, wat door de hele organisatie gebruikt wordt. Andere taken: Je gaat het CRM-systeem door middel van PHP verder ontwikkelen; Verder bouw je verschillende API's en koppelingen tussen systemen; Ook ga je collega's ondersteunen bij vragen over de software en applicaties; Deelnemen aan overleggen met het development team; Bij interesse is er de mogelijkheid om junioren te gaan begeleiden. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Java developer

Functie Je gaat aan de slag als Tester voor een aantal mooie projecten. Je komt terecht in een DevOps team waar jij aan de slag gaat om de kwaliteit te waarborgen omtrent de maatwerk software voor de klanten. Je draait je hand er niet voor om de adviserende rol te bekleden op het gebied van testautomatisering en het opzetten van testframeworks. Zoals aangegeven ga je daadwerkelijk in het eigen team aan de slag en is het daarnaast ook gebruikelijk bij de klanten op locatie te komen om te werken aan de opdrachten. Je krijgt zodoende echt een mooie kijk in

Bekijk vacature »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »

Software Developer Java

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Pagina: 1 2 volgende »

Werner g

werner g

16/12/2021 15:39:04
Quote Anchor link
Via react native maak ik een app. De inloggegeven sla ik op bij de database van mijn webhosting. Hiervoor heb ik een api in php geschreven en die draait nu ook in productie bij hostnet. Als ik de app test (via google chrome) en de signup gegevens invul krijg ik deze foutmelding. De http heb ik onherkenbaar gemaakt.

Access to fetch at 'http//..........login.php' from origin 'http://localhost:*******' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

Als lake weet ik niet zo goed wat ik nu moet doen. Na een paar dagen zoeken via google krijg ik zoveel zoekresultaten/vragen/oplossingen dat ik 'door de bomen het bos niet meer zie'. Veel CORS foutmeldingen lijken op elkaar en antwoorden zijn vaak verschillend.

Oplossingen die ik zelf gevonden heb:
- Kan/moet ik CORS policy uitschakelen? volgens mij mag dat niet ivm beveiliging
- Moet ik nog een server in de frontend maken met node.js? Is dit voor mij van toepassing?
- Moet ik een CORS plugin installeren voor google Chrome? (volgens mij los ik het probleem hiermee niet op)
- In de file index.php moet ik het onderstaande zetten met een paar aanpassingen. (ik heb alleen db.php, signup.php en login.php)

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');

Hopelijk kan iemand mij hiermee verder helpen.
 
PHP hulp

PHP hulp

06/11/2024 00:06:40
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 15:42:47
Quote Anchor link
Als de doelhost jouw host is, dan kan je inderdaar CORS toestaan met de hostname van je Origin.
Zie ook: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Dit kan je ook in .htaccess regelen

De developer-console van je browser kan je prima gebruiken om te kijken welke headers je terugkrijgt gestuurd bij een aanroep.
 
Werner g

werner g

16/12/2021 16:36:01
Quote Anchor link
Ik heb de info in de link doorgelezen maar dat is voor mij nog erg technisch. Hierdoor begrijp ik nog niet helemaal wat je bedoeld. De php scripts heb ik in de map httpdocs staan, ik zie geen .htaccess.

In DEVTOOLS staat ook deze error: "POST" http://.......login.php net::ERR_FAILED
Betekent dit dat ik POST moet toestaan?

Zou ik dan het onderstaande in login.php moeten zetten?

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 16:39:52
Quote Anchor link
Als je jan-en-alleman een request wilt laten doen, dan kan je dat proberen.
Gewijzigd op 16/12/2021 16:42:17 door - Ariën -
 
Werner g

werner g

16/12/2021 17:03:14
Quote Anchor link
"Als je jan-en-alleman een request wilt laten doen"

Bedoel je hiermee dat dit ook een oplossing is voor een signin/registratie pagina van een app.
Of wil je hiermee aangeven dat de beveiliging van je database dan zo lek als een mandje is.
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 17:06:49
Quote Anchor link
Ga zelf eens na of www.randomdomeinvaniemand.nl ook een aanroep mag doen naar je scripts via een AJAX-request.


Verder heeft CORS niks te maken met je database.
Gewijzigd op 16/12/2021 17:07:44 door - Ariën -
 
Werner g

werner g

16/12/2021 17:20:52
Quote Anchor link
De reden dat ik deze vraag stel op dit forum is omdat ik geen kennis heb van php, ajax request, CORS etc. Ik probeer een app te ontwikkelen waarvoor ik een database nodig heb. React-native, Kotlin, java, python talen begrijp ik redelijk maar dit totaal niet.

"Ga zelf eens na of www.randomdomeinvaniemand.nl ook een aanroep mag doen naar je scripts via een AJAX-request."

Lijkt me niet, maar het zegt me ook niks. Zou je me willen helpen om het werkend te krijgen?
 
- Ariën  -
Beheerder

- Ariën -

16/12/2021 17:49:29
Quote Anchor link
Is het niet handig om zelf wat ervaring op te doen? Jij bent ook diegene die de app moet onderhouden en beslissingen moet nemen.

De uitleg over CORS staat al helder beschreven in de link van Mozilla in dit topic. Met Origin kan je bepalen wie een request mag doen.
Gewijzigd op 16/12/2021 18:00:19 door - Ariën -
 
Werner g

werner g

17/12/2021 11:56:18
Quote Anchor link
Dat is inderdaad wel makkelijker. Ik heb de tekst naar het Nederlands vertaalt maar ik blijf nog wel met een aantal vragen zitten. Wanneer iets onder Simple Request valt begrijp ik niet helemaal maar dat heb ik voorlopig ook niet nodig. Klopt het dat ik de https van mijn client/app bij 'Access-Control-Allow-Origin' moet zetten. Moet ik dan een eigen proxy maken met bijv Heroku -> en de https van deze proxy bij 'Access-Control-Allow-Origin' zetten?
'http://localhost:******* lijkt me niet goed als ook andere gebruikers zich willen registeren.

header('Access-Control-Allow-Origin: https://MIJN proxy' ipv *);
header('Access-Control-Allow-Methods: POST);
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');

Dit gaat over de registratie pagina.
Moet ik bij de inlogpagina (login.php) dit erbij zetten?
Access-Control-Allow-Credentials: true
 
Werner g

werner g

20/12/2021 14:32:30
Quote Anchor link
Ik heb geprobeerd:

header("Access-Control-Allow-Origin: http://localhost:19006";);
header("Access-Control-Allow-Origin: http://localhost:19002";);
header("Access-Control-Allow-Origin: http://localhost:21";); poort hostnet
header("Access-Control-Allow-Origin: mijnwebsite.nl/LoginRegister/login.php");

Volgens mij moet ik de poort bij http://localhost:... zetten.
Weet je waar ik die kan vinden? Ik dacht dat het de eerste twee zijn, maar ik krijg steeds dezelfde Cors foutmelding.

Ik heb nu dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
include('db.php');

header("Access-Control-Allow-Origin: http://localhost:19006");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json");

$UserEmail = $decodedData['Email'];
$UserPW = ($decodedData['Password']); //password is hashed

$SQL = "SELECT * FROM newuser WHERE UserEmail = '$UserEmail'";
$exeSQL = mysqli_query($conn, $SQL);
$checkEmail =  mysqli_num_rows($exeSQL);

if ($checkEmail != 0) {
    $arrayu = mysqli_fetch_array($exeSQL);
    if ($arrayu['UserPw'] != $UserPW) {
        $Message = "pw WRONG";
    }
else {
        $Message = "Success";
    }
}
else {
    $Message = "No account yet";
}


$response[] = array("Message" => $Message);
echo json_encode($response);[/code]


--------------------------------------------------------------------------------


[
code]import React, { Component } from 'react';
import { View, Pressable, Text, TextInput, TouchableOpacity, Button} from 'react-native';
import stylesin from '../../style';
import Feather from 'react-native-vector-icons/Feather';

export default class signin extends Component {
  constructor(props) {
    super(props);
    this.state = {
      email : '',
      password : '',
      check_textInputChange : false,
      secureTextEntry : true,
    };
  }


  InsertRecord=()=>{
    var
Email = this.state.email;
    var
Password = this.state.password;

    if ((Email.length==0) || (Password.length==0)){
      alert("Required Field Is Missing!!!");
    }
else{
      var
APIURL = **"http://mywebsite.nl/login.php"**;

      var
headers = {
        'Accept' : 'application/json',
        'Content-Type' : 'application/json'
      };
            
      var
Data ={
        Email: Email,
        Password: Password
      };

      fetch(APIURL,{
        method: 'POST',
        headers: headers,
        body: JSON.stringify(Data)
      })
      .
then((Response)=>Response.json())
      .
then((Response)=>{
        alert(Response[0].Message)
        if (Response[0].Message == "Success") {
          console.log("true")
          this.props.navigation.navigate("HomeScreen");
        }

        console.log(Data);
      })
      .
catch((error)=>{
        console.error("ERROR FOUND" + error);
      })
    }
  }


  updateSecureTextEntry(){
    this.setState({
      ...
this.state,
      secureTextEntry: !this.state.secureTextEntry
    });
  }


  render() {
    return (
      <
View style={stylesin.viewStyle}>
          <
View style={stylesin.action}>
            <
TextInput
              placeholder="Enter Email"
              placeholderTextColor="#ff0000"
              style={stylesin.textInput}
              onChangeText={email=>this.setState({email})}
              />
          <
/View>

          <
View style={stylesin.action}>
            <
TextInput
              placeholder="Enter Password"
              placeholderTextColor="#ff0000"
              style={stylesin.textInput}
              secureTextEntry={this.state.secureTextEntry ? true : false}
              onChangeText={password=>this.setState({password})}
              />
                <
TouchableOpacity
                  onPress={this.updateSecureTextEntry.bind(this)}>
                  {
this.state.secureTextEntry ?
                  <
Feather
                  name="eye-off"
                  color="grey"
                  size={20}
                  />
                :  
                  <
Feather
                  name="eye"
                  color="black"
                  size={20}
                  />
                }
                <
/TouchableOpacity>  
          <
/View>


                {
/* Button */}

                <
View style={stylesin.loginButtonSection}>    
                  <
Pressable
                    style={stylesin.loginButton}
                    onPress={()=>{
                      this.InsertRecord()
                    }}
                    >
                      <
Text style={stylesin.text}>Sign In</Text>
                  <
/Pressable>
                <
/View>

                <
View style={stylesin.loginButtonSection}>
                  <
Pressable
                    style={stylesin.loginButton}
                    onPress={()=>{
                      // this.InsertRecord()
                    }}
                    >
                      <
Text style={stylesin.text}>Create new Account</Text>
                    <
/Pressable>
                  <
/View>
      <
/View>
    );
  }
}[
/code]
Gewijzigd op 20/12/2021 14:33:38 door werner g
 
- Ariën  -
Beheerder

- Ariën -

20/12/2021 15:11:18
Quote Anchor link
Als een gebruiker via een app direct connectie zoekt, dan moet je normaliter elke host toestaan.

Welke poorten zoek je dan precies? En weet je zeker dat je wel 'localhost' wilt? Of doe je dat vanwege je proxy?

En waarom poort 21 van FTP? Die doet niks met HTTP-requests hoor.
Gewijzigd op 20/12/2021 15:13:55 door - Ariën -
 
Werner g

werner g

21/12/2021 09:51:43
Quote Anchor link
Als een gebruiker via een app direct connectie zoekt, dan moet je normaliter elke host toestaan.

Dat klopt inderdaad, maar dan zou ik moeten kiezen voor:
header("Access-Control-Allow-Origin: *");
Maar dan kan iedereen toegang krijgen tot de database, toch ook buiten de app? Dat is ook niet de bedoeling ivm veiligheid.

Welke poorten zoek je dan precies? En weet je zeker dat je wel 'localhost' wilt? Of doe je dat vanwege je proxy?

Eigenlijk wou ik geen localhost maar dat werd aanbevolen, waarom begrijp ik ook niet echt.


IEn waarom poort 21 van FTP? Die doet niks met HTTP-requests hoor.


Dat had ik hier inderdaad niet moeten zetten, dat was een laatste poging omdat ik er niet meer uitkwam.
 
- Ariën  -
Beheerder

- Ariën -

21/12/2021 09:59:47
Quote Anchor link
CORS heeft niks met databases te maken. Ik neem aan dat je credentials daarvan in je API zitten, en niet in je app?

Ik heb het idee dat je maar een beetje aanrommelt, zonder te weten wat je doet. Dat lijkt mij erg gevaarlijk, los van CORS.

CORS is meer een drempel dan een echte beveiliging. Je kan er mee bepalen welke externe sites jouw scripts mogen aanroepen. Als iemand het los via bijv. wget of cURL aanroept, dan kan dat gewoon.
Gewijzigd op 21/12/2021 10:06:31 door - Ariën -
 
Werner g

werner g

21/12/2021 10:02:08
Quote Anchor link
De credentials zitten inderdaad in mijn api en niet in mijn app.

De reden dat ik het vraag is dat ik een goed beveiligde en werkende oplossing zoek.
Los van dit onderwerp heeft het weinig te maken met "erg gevaarlijk", het overige is alleen het schrijven van een app.
Gewijzigd op 21/12/2021 11:02:28 door werner g
 
- Ariën  -
Beheerder

- Ariën -

21/12/2021 10:08:02
Quote Anchor link
Zie mijn edit hierboven.
Dat schept meer duidelijkheid over CORS.

Verder help ik iedereen graag hoor. :-)
Gewijzigd op 21/12/2021 10:12:48 door - Ariën -
 
Werner g

werner g

21/12/2021 13:58:49
Quote Anchor link
Fijn dat je me toch wilt helpen. Ik denk dat ik nu begrijp welke stappen ik moet volgen om het werkend te krijgen. Curl heb ik gedownload, werkt in opdrachtprompt en volg nu de instructies hieronder.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
How to avoid the CORS preflight

The code in the question triggers a CORS preflightsince it sends an Authorization header.

https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

Even without that, the Content-Type: application/json header will also trigger a preflight.

What preflight means: before the browser tries the POST in the code in the question, it first sends an OPTIONS request to the server, to determine if the server is opting-in to receiving a cross-origin POST that has Authorization and Content-Type: application/json headers.

It works pretty well with a small curl script - I get my data.

To properly test with curl, you must emulate the preflight OPTIONS the browser sends:

curl -i -X OPTIONS -H "Origin: http://127.0.0.1:3000" \
    -H 'Access-Control-Request-Method: POST' \
    -H 'Access-Control-Request-Headers: Content-Type, Authorization' \
    "https://the.sign_in.url"
with https://the.sign_in.url replaced by whatever your actual sign_in URL is.

The response the browser needs from that OPTIONS request must have headers like this:

Access-Control-Allow-Origin:  http://127.0.0.1:3000
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Content-Type, Authorization
If the OPTIONS response doesnt include those headers, the browser will stop right there and never attempt to send the POST request. Also, the HTTP status code for the response must be a 2xxtypically 200 or 204. If its any other status code, the browser will stop right there.

The server in the question responds to the OPTIONS request with a 501 status code, which apparently means its trying to indicate it doesnt implement support for OPTIONS requests. Other servers typically respond with a 405 Method not allowed status code in this case.

So youll never be able to make POST requests directly to that server from your frontend JavaScript code if the server responds to that OPTIONS request with a 405 or 501 or anything other than a 200 or 204 or if doesnt respond with those necessary response headers.

The way to avoid triggering a preflight for the case in the question would be:

if the server didnt require an Authorization request header but instead, e.g., relied on authentication data embedded in the body of the POST request or as a query param
if the server didnt require the POST body to have a Content-Type: application/json media type but instead accepted the POST body as application/x-www-form-urlencoded with a parameter named json (or whatever) whose value is the JSON data
Gewijzigd op 23/12/2021 11:55:15 door werner g
 
Werner g

werner g

23/12/2021 11:54:36
Quote Anchor link
De curl in chrome is:
curl "http://gastgarant.nl/LoginRegister/login.php" ^
-X "OPTIONS" ^
-H "Connection: keep-alive" ^
-H "Accept: */*" ^
-H "Access-Control-Request-Method: POST" ^
-H "Access-Control-Request-Headers: content-type" ^
-H "Origin: http://localhost:19006"; ^

In mijn login.php heb ik dit staan:
header("Access-Control-Allow-Origin: http://localhost:19006";);
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json");

Zou ik dan het onderstaande aan moeten passen?
header("Access-Control-Allow-Origin: http://localhost:19006";);
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json");

En dit
application/x-www-form-urlencoded with a parameter named json (or whatever) verwerken in mijn signin.js script?
Gewijzigd op 23/12/2021 12:12:23 door werner g
 
- Ariën  -
Beheerder

- Ariën -

23/12/2021 13:05:58
Quote Anchor link
Maar met welke reden sta je alleen localhost toe? Zit je achter een proxy?
 
Werner g

werner g

23/12/2021 13:36:32
Quote Anchor link
Nee ik werk vanaf thuis met een laptop. Maar eerder vroeg ik of dit juist was:
header('Access-Control-Allow-Origin: *');

jou reactie: Als je jan-en-alleman een request wilt laten doen, dan kan je dat proberen.
mijn reactie: Bedoel je hiermee dat dit ook een oplossing is voor een signin/registratie pagina van een app. Of wil je hiermee aangeven dat de beveiliging van je database dan zo lek als een mandje is.
jou reactie: Ga zelf eens na of www.randomdomeinvaniemand.nl ook een aanroep mag doen naar je scripts via een AJAX-request.
etc.....

Ik ga ervan uit dat * sowieso niet goed is omdat dan iedereen toegang heeft.
Moet ik dan een Loopback-adres + 19006 gebruiken? Maar dat is toch hetzelfde als localhost?
 
- Ariën  -
Beheerder

- Ariën -

23/12/2021 14:26:32
Quote Anchor link
Gaat het om een app? Die maakt requests van verschillende hostnames.

Of gaat het om een site? Die draait op één hostname.

Verder is CORS een drempel, en geen waterdichte beveiliging. Als de beveiliging in je script die extern aangeroepen wordt goed beveiligd is, dan is het toch ook prima? Zelf zou ik het in sommige gevallen ongewenst vinden als een API-request met data door een externe site uitgelezen wordt. Die afweging moet je zelf maken.
Gewijzigd op 23/12/2021 14:33:22 door - Ariën -
 
Werner g

werner g

23/12/2021 14:42:54
Quote Anchor link
Het gaat inderdaad om een app. Zou je de voorgaande berichten ook willen lezen en aan willen geven wat ik precies moet doen. Stap voor stap. Ik ben loop hier nu al ruim 2 weken op vast en ik kom niks verder.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.