jQuery'nin ajax çağrısını farklı bir etki alanına kullanarak basit bir dosya yükleme formu oluşturdum. Tarayıcının alan adı için bir çerezi vardır ve bu çerez Firefox'ta istek ile birlikte gönderilir. Bununla birlikte, Chrome'da çerez bulunmuyor ve bu da giriş yapmama ile sonuçlanıyor. Çerezin Chrome'da mevcut olduğunu doğruladım, yalnızca istekle birlikte gönderilmiyor.CORS çerezi Chrome'da gönderilmiyor
ajax çağrısı: Bunlardan bazıları gerekli olmayabilir. İlgili çözümler denemeye eklendi ve bu girişimleri göstermek için kaldı.
<head>
<script src="jquery-2.1.1.min.js"></script>
</head>
<form enctype="multipart/form-data" id="file" method="POST">
<input name="file" type="file" />
<input name="Submit" type="button" id="upload"/>
</form>
<script type="text/javascript">
$.support.cors = true
$('input#upload').click(function(){
var formData = new FormData($('form#file')[0]);
.ajax({
url: 'http://accounts.mysite.dev/file/saveasset',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
xhrFields: {
withCredentials: true
},
crossDomain: true
});
});
</script>
Firefox kullanıcının çerezi gibi, doğru başlıklarını gönderir
POST /file/saveasset HTTP/1.1
Host: accounts.mysite.dev
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://phptest/htmltest/fileUpload.html
Content-Length: 8032
Content-Type: multipart/form-data; boundary=---------------------------4450073521062221055385143281
Origin: http://phptest
Cookie: Accounts=somecookiestuff
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Ama Krom does not
Ben sunucu kurulumu bu orijinini ve kimlik bilgilerini sağlamak için doğru olduğuna inanıyoruzPOST /file/saveasset HTTP/1.1
Host: accounts.mysite.dev
Content-Length: 7981
Accept: */*
Origin: http://phptest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGyMYxvKgEKWfBR5x
Referer: http://phptest/htmltest/fileUpload.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Ancak Chrome’un isteğinde bile gönderilmiyorlar. durumda alakalı, benim sunucu (Zend w/php) Ben sunucudaki herhangi SEÇENEĞİ uçuş öncesi isteği görmüyorum
$this->_response->setHeader('Access-Control-Allow-Origin', 'http://phptest');
$this->_response->setHeader('Access-Control-Allow-Credentials', 'true');
ayarlar.
Neden Chrome çerezimi gönderiyor?
Menü → Ayarlar → Göster Gelişmiş Ayarlar ... → Gizlilik: İçerik Ayarları
emin "Blok üçüncü taraf çerezlerini ve site verilerini" Make olan Krom 3. parti çerezleri engelleyecek şekilde ayarlanmış olup olmadığını
Chrome'da FF'de ayarlanmış hangi çerezleri görmeyi bekliyorsunuz? Her iki istek de bir “Origin” başlığına sahiptir. – Palpatim
Çerez başlığı. –