Εμφάνιση 1-13 από 13
  1. #1
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Επαιζά με ajax αυτές τις μέρες και μόλις παρατήρησα για πρωτη φορά ότι δεν μπορείς να κάνεις http requests σε διαφορετικό domain απ' ότι το origin domain. Το έψαξα, έμαθα τους κανόνες που ακολουθεί το ajax (το request domain, protocol και port πρέπει να είναι ίδιο με το origin) και όλα καλά μέχρι εδώ.

    Ερώτημα 1: Επίσης έμαθα για το cors και από ότι κατάλαβα στην ουσία είναι ένα σύστημα για file permissions σε έναν webserver; Δηλαδή για παράδειγμα στον apache μπορώ να πω, το τάδε αρχείο ή directory είναι public η private? Μέχρι τώρα νόμιζα ότι ότι υπάρχει μέσα στο directory /var/http είναι public για όλους εκεί έξω. Δεν ισχύει αυτό;

    Ερώτημα 2: Αν κάνω ένα http request από ένα scriptaki στον webserver (χρησιμοποιώ apache) θα δουλέψει; Η πρέπει να μπω αναγκαστηκά από browser;

    Γενικά θα έχω και μια android εφορμογή η οποία θα χρησιμοποιεί έναν ενδιάμεσο (php) στον server μου για να αποθηκεύει και να λαμβάνει δεδομένα από την βάση δεδομένων. Τα http requests θα δουλεύουν ή πρέπει να δώσω permission με κάποιο τρόπο σε όλους εκεί έξω για το συγκεκριμένο php αρχείο?

  2. #2
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Αν το response από τον server περιέχει τον header Access-Control-Allow-Origin, ο οποίος έχει το domain από το οποίο κάνεις το request, είτε *(όλα τα domain επιτρέπονται), τότε παρέχεται ajax access. Τα αρχεία είναι public για όλους αλλά όχι για ajax access, αλλά για κανονικό access, δηλαδή αν κάνεις navigate direct στο αρχείο.

  3. #3
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Αν το response από τον server περιέχει τον header Access-Control-Allow-Origin, ο οποίος έχει το domain από το οποίο κάνεις το request, είτε *(όλα τα domain επιτρέπονται), τότε παρέχεται ajax access. Τα αρχεία είναι public για όλους αλλά όχι για ajax access, αλλά για κανονικό access, δηλαδή αν κάνεις navigate direct στο αρχείο.
    Άρα με άλλα λόγια μόνο για το ajax ισχύει αυτό, αν κάνω ένα http request από python για παράδειγμα θα δουλέψει κανονικά και θα πάρω το response, σωστά;
    Επίσης αν ξέρεις κανένα καλό λινκ που να εξηγεί γιατί το ajax έχει αυτόν τον περιορισμό, θα μου ήταν πολύ χρήσιμο!

    Ευχαριστώ

  4. #4
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από babaliaris Εμφάνιση μηνυμάτων
    Άρα με άλλα λόγια μόνο για το ajax ισχύει αυτό, αν κάνω ένα http request από python για παράδειγμα θα δουλέψει κανονικά και θα πάρω το response, σωστά;
    Επίσης αν ξέρεις κανένα καλό λινκ που να εξηγεί γιατί το ajax έχει αυτόν τον περιορισμό, θα μου ήταν πολύ χρήσιμο!

    Ευχαριστώ
    Ναι ισχύει μόνο για το ajax.
    Όταν κάνεις ένα request είτε με ajax, είτε κανονικό request, αποστέλλονται τα cookies που έχεις για το domain που γίνεται αυτό το request. Φάντασου ότι αν δεν υπήρχε αυτός ο περιορισμός οποιoδήποτε site θα μπορούσε να τραβάει αρχεία από οποιδήποτε άλλο site με τα δικά σου cookies, δηλαδή αν πχ είσαι συνδεμένος στο fb και ανοίξεις ένα tab και πάς σε ένα κακόβουλο site, θα μπορούσε μέσω ajax να τραβήξει μηνύματα στο messenger. Ενώ με αυτόν τον περιορισμό μονο το fb μπορέι να κάνει ajax call.

  5. #5
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Ναι ισχύει μόνο για το ajax.
    Όταν κάνεις ένα request είτε με ajax, είτε κανονικό request, αποστέλλονται τα cookies που έχεις για το domain που γίνεται αυτό το request. Φάντασου ότι αν δεν υπήρχε αυτός ο περιορισμός οποιδήποτε site θα μπορούσε να τραβάει αρχεία από οποιδήποτε άλλο site με τα δικά σου cookies, δηλαδή αν πχ είσαι συνδεμένος στο fb και ανοίξεις ένα tab και πάς σε ένα κακόβουλο site, θα μπορούσε μέσω ajax να τραβήξει μηνύματα στο messenger. Ενώ με αυτόν τον περιορισμό μονο το fb μπορέι να κάνει ajax call.
    α κατάλαβα!!! Ευχαριστώ! Πραγματικά μου έλυσες μια τεράστια απορία!

    - - - Updated - - -

    Κάτι τελευταίο. Στον ιντερνετ είδα ότι όταν κάνεις ajax request σε άλλο domain από τι το origin σου εμφανίζει το μύνημα
    Κώδικας:
    the access control allow origin header has a value that does not much the origin
    . Εγώ δεν παίρνω κάποιο τέτοιο μύνημα αλλά
    τo ajax μου επιστρέφει error 404 not found. Είναι λογικό αυτό το error? Το url που χρησιμοποιώ στο request δουλεύει σίγουρα (δοκίμασα να το κάνω copy-paste κατευθεία στον browser για να δω αν γίνεται και όντως παίρνω το response κανονικά.)

    - - - Updated - - -

    Κάτι τελευταίο. Στον ιντερνετ είδα ότι όταν κάνεις ajax request σε άλλο domain από τι το origin σου εμφανίζει το μύνημα
    Κώδικας:
    the access control allow origin header has a value that does not much the origin
    . Εγώ δεν παίρνω κάποιο τέτοιο μύνημα αλλά
    τo ajax μου επιστρέφει error 404 not found. Είναι λογικό αυτό το error? Το url που χρεισιμοποιώ στο request δουλεύει σίγουρα (δοκίμασα να το κάνω copy-paste κατευθεία στον browser για να δω αν γίνεται και όντως πέρνω το response κανονικά.)

  6. #6
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Είναι αρχείο ή script; Σε δικό σου server είναι ή σε κάποιον άλλο;

  7. #7
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Είναι αρχείο ή script; Σε δικό σου server είναι ή σε κάποιον άλλο;
    Τελικά το λάθος εδώ δεν ήταν το cross origin αλλά στο url. Έδινα στο ajax αυτό
    Κώδικας:
    192.168.1.5:1996/test/php/test.php
    ενώ αν δώσω και το πρωτόκολλο
    Κώδικας:
    http://192.168.1.5:1996/test/php/test.php
    τότε δουλεύει κανονικά. Δεν ξέρω όμως γιατί το χρειάζεται.

    Τέλος πάντων τώρα δοκίμασα κάτι άλλο και πάλι δεν δουλεύει και τώρα παίρνω το μύνημα.
    Ο server είναι apache και τρέχει στο local machine μου. Μπήκα από την εξωτερική μου ip ενώ το ajax κάνει request στην εσωτερική local ip και παίρνω το error
    Κώδικας:
    Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.5:1996/test/php/test.php. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
    Ο κώδικας μου:
    Κώδικας:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Test</title>
    
        <script>
            function doStuff()
            {
                xhttp = new XMLHttpRequest();
    
                xhttp.onreadystatechange = function() 
                {
                    if (this.readyState == 4 && this.status == 200)
                        alert(this.responseText);
    
                    else if (this.readyState == 4 && this.status != 200)
                        alert(this.status);
                }
    
                xhttp.open("GET", "http://192.168.1.5:1996/test/php/test.php", true);
                xhttp.send();
            }
        </script>
    </head>
    <body>
    
        <input type="button" onclick="doStuff()">
        
    </body>
    </html>
    Δες και αυτήν την φώτο για να καταλάβεις το directory tree του test:
    Πατήστε στην εικόνα για να τη δείτε σε μεγέθυνση. 

Όνομα:  Screenshot_2019-08-16_19-18-00.png 
Εμφανίσεις:  6 
Μέγεθος:  33,0 KB 
ID: 205947

    Επίσης έβαλα ένα .htaccess αρχείο στο directory που βρήσκετε το .php αρχείο.

    Κανονικά δεν θα έπρεπε να δουλεύει;;
    Τελευταία επεξεργασία από το μέλος babaliaris : 16-08-19 στις 19:33.

  8. #8
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Μην χρησιμοποίεις το full path. Αντί για http://192.168.1.5:1996/test/php/test.php βάλε php/test.php ή /test/php/test.php
    Το πρώτο είναι relative ως προς το αρχείο που τρέχει ο κώδικας ενώ το δεύτερο ως προς το server root.

  9. #9
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Μην χρησιμοποίεις το full path. Αντί για http://192.168.1.5:1996/test/php/test.php βάλε php/test.php ή /test/php/test.php
    Το πρώτο είναι relative ως προς το αρχείο που τρέχει ο κώδικας ενώ το δεύτερο ως προς το server root.
    αυτό λειτουργεί, αλλά με αυτό το test προσπαθώ να δοκιμάσω το cross origin request. Για αυτό βάζω το full path http://192.168.1.5:1996/test/php/test.php στο ajax url ενώ εγώ μπαίνω στο index.html (μέσω browser) χρησιμοποιόντας την εξωτερική μου ip http://94.68.171.202:1996/test/ για να δοκιμάσω αν δουλεύει το CORS αλλά δεν δουλεύει.

  10. #10
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Δοκίμασε στο php script πριν κάνεις print κάτι, να στείλεις τον header manually.
    Κώδικας:
    header("Access-Control-Allow-Origin: *");

  11. #11
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Δοκίμασε στο php script πριν κάνεις print κάτι, να στείλεις τον header manually.
    Κώδικας:
    header("Access-Control-Allow-Origin: *");
    Αυτό δουλεύει!!! Αλλά το .htaccess μήπως γνωρίζεις γιατί δεν δουλεύει;

  12. #12
    Εγγραφή
    28-09-2012
    Μηνύματα
    860
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    2048/512
    ISP
    Forthnet
    Path Level
    Interleaved
    Δοκίμασε να αντικαταστήσεις τα περιεχόμενα του .htaccess με αυτό:
    Κώδικας:
    Header add Access-Control-Allow-Origin "*"
    Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
    Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

  13. #13
    Εγγραφή
    24-09-2010
    Περιοχή
    Χαλκιδική
    Ηλικία
    28
    Μηνύματα
    743
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    24mbps
    ISP
    ΟΤΕ Conn-x
    Router
    ZTE ZXHN H108NS
    Παράθεση Αρχικό μήνυμα από HackFreak Εμφάνιση μηνυμάτων
    Δοκίμασε να αντικαταστήσεις τα περιεχόμενα του .htaccess με αυτό:
    Κώδικας:
    Header add Access-Control-Allow-Origin "*"
    Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
    Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
    μπα, δεν δουλεύει.

    - - - Updated - - -

    Βρήκα αυτό στο στο stackoverflow και μπαίνω από firefox. Μάλλον αυτό είναι.

    - - - Updated - - -

    Δεν πηράζει ποια η διαφορά; Θα βάζω τον header μέσα από το php αρχείο που με ενδιαφέρει να είναι cross origin όπως μου έδειξες.

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας