2014-06-11 23 views
9

में नहीं भेजा गया है, मैंने एक अलग डोमेन पर jQuery के AJAX कॉल का उपयोग करके एक साधारण फ़ाइल अपलोड फ़ॉर्म सेट अप किया है। ब्राउजर के पास डोमेन के लिए एक कुकी है, और यह कुकी फ़ायरफ़ॉक्स में अनुरोध के साथ भेजी जाती है। हालांकि, कुकी क्रोम में मौजूद नहीं है, जिसके परिणामस्वरूप लॉग इन करने में विफलता है। मैंने सत्यापित किया है कि क्रोम क्रोम में मौजूद है, यह सिर्फ अनुरोध के साथ नहीं भेजा गया है।क्रोम कुकी को क्रोम

AJAX कॉल: इनमें से कुछ आवश्यक नहीं हो सकता है। इसे संबंधित समाधानों का प्रयास जोड़ा गया था और उन प्रयासों को प्रदर्शित करने के लिए छोड़ दिया गया था।

<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> 

फ़ायरफ़ॉक्स सही हेडर भेजता है, उपयोगकर्ता की कुकी सहित

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 

लेकिन क्रोम नहीं

POST /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 

मुझे विश्वास है कि सर्वर सेटअप सही ढंग से है इस मूल और साख अनुमति देने के लिए , लेकिन वे क्रोम के अनुरोध में भी नहीं भेजे गए हैं। मामले में यह प्रासंगिक है, अपने सर्वर (php डब्ल्यू/Zend) सेट

$this->_response->setHeader('Access-Control-Allow-Origin', 'http://phptest'); 
$this->_response->setHeader('Access-Control-Allow-Credentials', 'true'); 

मैं सर्वर पर किसी भी विकल्प preflight अनुरोध नहीं दिख रहा।

क्रोम मेरी कुकी क्यों भेज रहा है?

+0

आप एफएफ में सेट किए जा रहे क्रोम में कौन सी कुकी देखने की उम्मीद कर रहे हैं? दोनों अनुरोधों में 'उत्पत्ति' हेडर है। – Palpatim

+0

कुकी हेडर। –

उत्तर

13

जांच करें कि क्रोम 3 पार्टी कुकीज़ अवरुद्ध किया गया है:

मेनू → सेटिंग → उन्नत सेटिंग दिखाएं ... → गोपनीयता: सामग्री सेटिंग

यकीन है कि "ब्लॉक तृतीय पक्ष कुकी और साइट डेटा" बनाओ है अनियंत्रित। या, यदि आपके पास तीसरे पक्ष की कुकीज़ को अवरुद्ध करने वाला कुछ और है तो उसे अक्षम भी करें।

क्रॉस-साइट जेएसओएनपी अनुरोध करने में यह वही समस्या थी, कुकीज़ को डोमेन पर किसी भी टैग अनुरोध के साथ नहीं भेजा जाता है।

+0

शानदार! मैं _think_ नहीं करता यह डिफ़ॉल्ट सेटिंग है इसलिए मैंने इसे किसी बिंदु पर बदल दिया होगा। –

+0

क्या सेटिंग बदलने के अलावा ऐसा करने का कोई और तरीका है? –

+0

यह हमारे देवताओं में से एक है और हमें थोड़ा सा समय लगता है। इसके लिए धन्यवाद। – radicalmatt

संबंधित मुद्दे