Je suis en train de soutien de la SCRO dans mon NodeJS application qui utilise l'Express JS framework web. J'ai lu un Google groupe de discussion sur la façon de gérer cela, et de lire quelques articles sur la façon de la SCRO œuvres. Tout d'abord, je l'ai fait (le code est écrit en CoffeeScript syntaxe):
app.options "*", (req, res) ->
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
# try: 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Methods', 'GET, OPTIONS'
# try: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
Il ne semble pas fonctionner. Il semble que mon navigateur (Chrome) n'est pas l'envoi de la première demande d'OPTIONS. Quand je l'ai juste mis à jour le bloc de la ressource j'ai besoin de soumettre un cross-origin requête GET:
app.get "/somethingelse", (req, res) ->
# ...
res.header 'Access-Control-Allow-Origin', '*'
res.header 'Access-Control-Allow-Credentials', true
res.header 'Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'
res.header 'Access-Control-Allow-Headers', 'Content-Type'
# ...
Il fonctionne (dans Chrome). Cela fonctionne aussi dans Safari.
J'ai lu que...
Dans un navigateur de mise en œuvre de la SCRO, chaque croix-origine requête GET ou POST est précédée par une demande d'OPTIONS qui vérifie si le GET ou POST, c'est OK.
Donc ma question principale est de savoir, comment se fait-cela ne semble pas se produire dans mon cas? Pourquoi n'est-ce pas l'une de mes applications.les options de bloc appelé? Pourquoi ai-je besoin pour définir les en-têtes dans mon application principale.obtenez de bloc?