我已经使用jQuery对不同域的ajax调用设置了一个简单的文件上传表单.浏览器有一个域的cookie,这个cookie随Firefox中的请求一起发送.但是,Chrome中不存在Cookie,导致无法登录.我已经确认Chrome确实存在Cookie,而不是随请求发送.
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>
Run Code Online (Sandbox Code Playgroud)
Firefox发送正确的标头,包括用户的cookie
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: …Run Code Online (Sandbox Code Playgroud)