Tôi đang cố gắng yêu cầu AJAX làm việc giữa trình duyệt của tôi và máy chủ Apache (nằm trong một miền khác) bằng CORS.CORS không hoạt động trên Chrome/Firefox và Apache
Ở phía máy chủ, tôi đã thực hiện những thay đổi sau trong phần httpd.conf của máy chủ theo các câu trả lời trong "Header set Access-Control-Allow-Origin in .htaccess doesn't work":
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
gọi AJAX của tôi là có dạng:
$.ajax({
url :'https://x.x.x.x/validateCustomerID',
type : 'POST',
cache : false,
crossDomain: true,
contentType: 'application/json',
beforeSend: function(xhr){
xhr.setRequestHeader("Access-Control-Allow-Methods","POST");
xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
},
data : {loginId : '12345'},
success : function(response){console.log("Success"+JSON.stringify(response))},
error : function(response){console.log("Error"+JSON.stringify(response))}
});
}
Tôi cũng đã thử nhận xét ra beforeSend() để tránh yêu cầu preflight nhưng cũng không thành công.
Các thông báo lỗi mà tôi nhận được trên Chrome và Firefox là:
- Trong Chrome:
"XMLHttpRequest không thể tải https://x.x.x.x/validateCustomerID Không 'Access-Control-Allow-Origin' tiêu đề là hiện tại. Do đó, nguồn gốc 'null' không được phép truy cập. Phản hồi có mã trạng thái HTTP 403. "
- Trong Firefox:
"Cross-Origin Yêu cầu Bị chặn: The Origin Policy Same không cho phép đọc các tài nguyên từ xa tại https://x.x.x.x/validateCustomerID.. (Lý do: CORS yêu cầu không thành)"
Không có tiêu đề phản hồi nào nhận được từ máy chủ trong trình duyệt mà tôi cho là bắt buộc để CORS hoạt động và nhật ký trong máy chủ không hiển thị yêu cầu nào từ trình duyệt của tôi.
Tôi thực sự đánh giá cao nếu ai đó ở đây có thể giúp tôi giải quyết vấn đề này vì tôi bị kẹt ở đây trong vài ngày và đã sử dụng hầu như tất cả các phương pháp thử và thử để làm việc này.
Bạn kích hoạt các tiêu đề module apache 'headers' a2enmod ? –
Tại sao bạn cố đặt tiêu đề Access-Control trong ** request **? – Quentin
@ Jacob, tôi đã thử kích hoạt tiêu đề mô-đun apache bằng cách sử dụng lệnh tiêu đề a2enmod nhưng nó đã cho tôi một lỗi rằng đó là một lệnh không hợp lệ. Sau đó tôi đọc ở đâu đó rằng Mod_headers được kích hoạt mặc định trong Apache vì vậy tôi để nó như nó được. Có thể đó là một vấn đề? –