fineuploaderサブドメイン間アップロードファイルクッキーの紛失問題の解決
1399 ワード
現在のプロジェクトではfineuploaderという純html 5アップロードコンポーネントを用いる、開発過程でアップロードサービスを特定のサブドメインの下に単独で配置する.ログインクッキーが設定したdomainはルートドメインの下でバックエンドコードでユーザログイン検出を行い、常に302から未ログインページにリダイレクトされていることが判明し、チェックしたところajax xhrリクエストにクッキーが付いていないことが判明した
ネットでたぶん検索してみましたが、
と書く
オリジナルajaxリクエスト方式:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://xxxx.com/demo/b/index.php", true);
xhr.withCredentials = true;//ドメイン間でのcookiesの送信をサポート
xhr.send();
jqueryのajaxのpostメソッドリクエスト:
$.ajax({
type: "POST",
url: "http://xxx.com/api/test",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function(){
},
error:function(){
}
})
サーバ側の設定:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www.xxx.com");
バックエンドは対応する調整を行い、フロントエンドはfineuploaderに関連しているため、そのコードの中で簡単に下のキーワードwithCredentialsを検索し、それから公式に下のドキュメントを見て、corsの構成がありますhttp://docs.fineuploader.com/api/options.html#cors
コンフィギュレーションラインに次のコンフィギュレーションを追加すればOKです
修正後、問題が解決する.
同じ問題に遭遇した人が参考にしてほしい.
ネットでたぶん検索してみましたが、
と書く
オリジナルajaxリクエスト方式:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://xxxx.com/demo/b/index.php", true);
xhr.withCredentials = true;//ドメイン間でのcookiesの送信をサポート
xhr.send();
jqueryのajaxのpostメソッドリクエスト:
$.ajax({
type: "POST",
url: "http://xxx.com/api/test",
dataType: 'jsonp',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success:function(){
},
error:function(){
}
})
サーバ側の設定:
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Origin: http://www.xxx.com");
バックエンドは対応する調整を行い、フロントエンドはfineuploaderに関連しているため、そのコードの中で簡単に下のキーワードwithCredentialsを検索し、それから公式に下のドキュメントを見て、corsの構成がありますhttp://docs.fineuploader.com/api/options.html#cors
コンフィギュレーションラインに次のコンフィギュレーションを追加すればOKです
cors: {
allowXdr: true,//
expected: true,
sendCredentials: true
}
修正後、問題が解決する.
同じ問題に遭遇した人が参考にしてほしい.