Nasıl cross-origin resource sharing (CORS) bir post isteği çalışma almak için | Netgez.com
SORU
21 NİSAN 2011, PERŞEMBE


Nasıl cross-origin resource sharing (CORS) bir post isteği çalışma almak için

İki web sunucusu olan benim yerel lan (machineA) bir makine var. İlk yerleşik XBMC (port 8080) ve görüntüler kütüphanemiz. İkinci sunucu isteğe bağlı bir dosya dönüştürme tetiklemek için kullanıyorum CherryPy bir python betiği (port 8081). Dosya dönüştürme sayfa XBMC sunucu hizmet, AJAX POST isteği ile tetiklenir.

  • Kütüphane gösteren http://machineA:8080 git
  • Kütüphane görüntülenir
  • Kullanıcı 'convert' aÅŸağıdaki komutu - sorunları olan link . tıklar

jQuery Ajax İsteği

$.post('http://machineA:8081', {file_url: 'asfd'}, function(d){console.log(d)})
  • Tarayıcı, aÅŸağıdaki baÅŸlıkları SEÇENEKLERİ ile HTTP isteÄŸi verir;

İstek Başlığı - SEÇENEKLER

Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://machineA:8080
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
  • Sunucu aÅŸağıdaki ile yanıt verir;

Yanıt Başlığı - SEÇENEKLER (= 200 OK DURUM)

Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:40:29 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1
  • KonuÅŸmanın ardından durur. Teoride doÄŸru olan sunucu cevabı olarak YAZILAN bir isteÄŸi olmalıdır tarayıcı, (?) KÖŞELERİ baÅŸlıklar (- Control-Allow-Access Kökeni: *)

Sorun giderme için, aynı zamanda aynı ülkede yaşıyoruz $.http://jquery.com post komutu. Bu işler jquery.com gelen SEÇENEKLER isteği üzerine bir YAZI gönderilir şaşkın, nerede olduğumu. Bu işlem başlıkları altında;

İstek Başlığı - SEÇENEKLER

Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://jquery.com
Access-Control-Request-Method: POST

Yanıt Başlığı - SEÇENEKLER (= 200 OK DURUM)

Content-Length: 0
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: text/html;charset=ISO-8859-1

İstek Başlığı - YAZI

Host: machineA:8081
User-Agent: ... Firefox/4.01
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://jquery.com/
Content-Length: 12
Origin: http://jquery.com
Pragma: no-cache
Cache-Control: no-cache

Yanıt Başlığı - YAZI (= 200 OK DURUM)

Content-Length: 32
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 1728000
Server: CherryPy/3.2.0
Date: Thu, 21 Apr 2011 22:37:59 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Content-Type: application/json

Aynı isteği bir site değil, diğer iş neden çözemiyorum. Birini özlüyorum ne işaret edebilir umuyorum. Yardımlarınız için teşekkürler!

CEVAP
22 NİSAN 2011, Cuma


Nihayet bu bağlantıyı üzerine "A CORS POST request works from plain javascript, but why not with jQuery?" jQuery 1.5.1 ekler notlar . tökezledi

 Access-Control-Request-Headers: x-requested-with

tüm KÖŞELERİ istekleri Başlığı. jQuery 1.5.2 bu yapmaz. Ayrıca, aynı soruya göre, sunucu yanıtı ayar Başlığı

Access-Control-Allow-Headers: *

yanıt devam etmek izin vermiyor. Yanıt başlığını özellikle gerekli başlıklar içerir emin olmak gerekir. yani:

Access-Control-Allow-Headers: x-requested-with 

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • Skrillex

    Skrillex

    6 NİSAN 2010