อยากทราบครับว่าจะสร้างตัว client จาก javascript เป็นไปได้ไหม ครับ
จากที่ผมศึกษามา
ผมใช้ตัวนี้ครับ
var settings = {
"async": true,
"crossDomain": true,
"url": "
http://localhost:21130/api/Account/External",
"method": "GET"
//"url": "
http://localhost:21130/api/DashBoard/DecryptUserId/158",
//"method": "POST"
,"headers": {
//"Access-Control-Allow-Origin": "
http://localhost:6847",
//"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
//"Access-Control-Allow-Headers": "Origin, Content-Type, Accept, Authorization, X-Request-With",
//"Access-Control-Allow-Credentials": "true"
//"access-control-allow-origin": "
http://localhost:54987"
// "authorization": "Bearer bXBhOjEyMzQ="
// "authorization": "Bearer[bXBhOjEyMzQ=]",
"Content-Type":"text/plain;charset=UTF-8"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
หรือตัวนี้ก็ใช้ได้ครับ
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.withCredentials = true;
xhttp.open("GET", "
http://localhost:21130/api/Account/External2", true);
xhttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
xhttp.setRequestHeader("Authorization", "Bearer[bXBhOjEyMzQ=]");
xhttp.send();
แต่ติดปัญหาตรงที่
Failed to load
http://localhost:21130/api/Account/External: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '
http://localhost:6847' is therefore not allowed access.
ผมลองดัก error ที่ฝั่ง web API server มันเข้า route ได้ถูกต้องแล้วครับแต่เหมือนจะคืนค่าไม่ได้
จาก error ที่ผมศึกษามา มันเป็นเพราะส่ง 2 โดเมน จึงเกิดการ cross เกิดขึ้น เรียกว่า โดเมนครอส
วิธีแก้คือ ใส่ เฮดเดอ Access-Control-Allow-Origin เข้าไป
แต่ปัญหามีอยู๋ว่าพอผมใส่ header แล้วส่งเข้าไปที่ web API server มันเข้า Dispose(bool disposing) และทำการทำลาย request นี้
เหมือนอาการใส่ header ผิด
อีกอย่างผมไม่สามารถใส่ authorization ได้ รูปแบบการใส่ที่ค้นหามาคือ
"headers": {
"authorization": "Bearer bXBhOjEyMzQ=" ,
"Content-Type":"text/plain;charset=UTF-8"
}
ซึ่ง เจ้า Content-Type สามารถส่งไปได้หากเอา authorization ออกหรืออีกแบบคือ
xhttp.setRequestHeader("authorization", "Bearer bXBhOjEyMzQ=");
สรุป***
ผมไม่สามารถใส่ header ของ authorization และ Access-Control-Allow-Origin เป็นเพราะอะไรหรอครับ
ใครพอทราบครับ รบกวนด้วยครับ
ขอบพระคุณครับ
Http Request JavaScript
จากที่ผมศึกษามา
ผมใช้ตัวนี้ครับ
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:21130/api/Account/External",
"method": "GET"
//"url": "http://localhost:21130/api/DashBoard/DecryptUserId/158",
//"method": "POST"
,"headers": {
//"Access-Control-Allow-Origin": "http://localhost:6847",
//"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
//"Access-Control-Allow-Headers": "Origin, Content-Type, Accept, Authorization, X-Request-With",
//"Access-Control-Allow-Credentials": "true"
//"access-control-allow-origin": "http://localhost:54987"
// "authorization": "Bearer bXBhOjEyMzQ="
// "authorization": "Bearer[bXBhOjEyMzQ=]",
"Content-Type":"text/plain;charset=UTF-8"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
หรือตัวนี้ก็ใช้ได้ครับ
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.withCredentials = true;
xhttp.open("GET", "http://localhost:21130/api/Account/External2", true);
xhttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
xhttp.setRequestHeader("Authorization", "Bearer[bXBhOjEyMzQ=]");
xhttp.send();
แต่ติดปัญหาตรงที่
Failed to load http://localhost:21130/api/Account/External: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:6847' is therefore not allowed access.
ผมลองดัก error ที่ฝั่ง web API server มันเข้า route ได้ถูกต้องแล้วครับแต่เหมือนจะคืนค่าไม่ได้
จาก error ที่ผมศึกษามา มันเป็นเพราะส่ง 2 โดเมน จึงเกิดการ cross เกิดขึ้น เรียกว่า โดเมนครอส
วิธีแก้คือ ใส่ เฮดเดอ Access-Control-Allow-Origin เข้าไป
แต่ปัญหามีอยู๋ว่าพอผมใส่ header แล้วส่งเข้าไปที่ web API server มันเข้า Dispose(bool disposing) และทำการทำลาย request นี้
เหมือนอาการใส่ header ผิด
อีกอย่างผมไม่สามารถใส่ authorization ได้ รูปแบบการใส่ที่ค้นหามาคือ
"headers": {
"authorization": "Bearer bXBhOjEyMzQ=" ,
"Content-Type":"text/plain;charset=UTF-8"
}
ซึ่ง เจ้า Content-Type สามารถส่งไปได้หากเอา authorization ออกหรืออีกแบบคือ
xhttp.setRequestHeader("authorization", "Bearer bXBhOjEyMzQ=");
สรุป***
ผมไม่สามารถใส่ header ของ authorization และ Access-Control-Allow-Origin เป็นเพราะอะไรหรอครับ
ใครพอทราบครับ รบกวนด้วยครับ
ขอบพระคุณครับ