MarkLogic9アプリケーションのカスタムログインページを作成しています。私はhttp:// localhost:8601上にhttpサーバ(サーバ側のjavascript)を持っています。 login.sjsページはシンプルです:MarkLogicアプリケーションサーバーのカスタムログインページは、Ajax GETリクエストからSessionID Cookieを受け取りません
xdmp.addResponseHeader('Access-Control-Allow-Origin', '*');
xdmp.addResponseHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
xdmp.addResponseHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
xdmp.addResponseHeader('Access-Control-Allow-Credentials', "true");
xdmp.setResponseContentType("text/plain");
//generate object with field names from Request params
var params ={}; //JSON parsed URL parameters
var field_names = xdmp.getRequestFieldNames().toArray();
for(var fname_idx in field_names){
params[field_names[fname_idx]] = String(xdmp.quote(xdmp.getRequestField(String(field_names[fname_idx]))));
}
//get username and password from passed paramters
var username = params.username;
var password = params.password;
xdmp.login(username,password);
私はこのページを直接(すなわちローカルホストを入力?:8601/login.sjsユーザ名=テスト&パスワード=テスト)にアクセスすると、それが正常にログインし、これらを使用して応答しますヘッダ:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With,content-type
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Length:4
Content-type:text/plain; charset=UTF-8
Keep-Alive:timeout=5
Server:MarkLogic
Set-Cookie:SessionID=917f127921feb6ef; path=/
私は、次のAJAX要求を送信し、私のクライアント側のlogin.htmlページからページにアクセスしようとすると問題が発生する」
$("#login-button").click(function(event){
var un = $("#username").val();
var pw = $("#password").val();
if(un){
params.username = $("#username").val();
}
if(pw){
params.password = $("#password").val();
}
event.preventDefault(); //prevent form from clearing
console.log("input entered");
$.ajax({
type: "POST",
url: url,
data: params,
success: function(data){
alert("login worked");
if(data == "true"){
console.log("worked");
checkUsername();
//window.location.href = "homepage.html";
} else{
alert("login failed");
invalidLogin();
}
},
error: function(data){
invalidLogin();
}
});
});
この意志成功したセッションIDクッキーが含まれていないだけでなく、ログインが、ヘッダは、サーバから返さ:
Content-Length:3022
Content-type:text/html
Date:Mon, 12 Jun 2017 08:03:36 GMT
Last-Modified:Mon, 12 Jun 2017 07:03:45 GMT
Server:SimpleHTTP/0.6 Python/2.7.13
私の質問:なぜ私のlogin.htmlとのAJAXリクエストページがサーバーからのCookieレスポンスヘッダを受信および/またはされていませんどうすれば修正できますか?
マイセットアップ:
- Marklogic 9
- 私は(管理者を含む)は、複数のユーザで試してみましたが、ポート8010上のポート8601
- PythonのSimpleServerと(すべてのローカルホスト)
- 上のHTTPアプリケーションサーバ私はそれがprivelegesの問題だとは思わない。
ありがとうございます。
2番目の要求のサーバー応答ヘッダーが疑わしいと思われます。あなたのAJAXコールはいくつかのミドルウェアまたはプロキシを経由しますか? – grtjn
私はそうは思わない、すべてがローカルにホストされている。私は決定的に決定するのに十分なものはありませんが。私が確認できる方法はありますか?また、クロスドメインリクエストを使用していることとは関係がありますか?または、私はPython SimpleHTTPServerの代わりにApacheなどを使用していますか? –