Tôi biết câu hỏi không yêu cầu mã PHP. Tôi đến đây vì toàn bộ điều preflight và Angular2. Khi tôi nhìn vào câu trả lời của Matteo, tôi nhận ra tại sao yêu cầu tới máy chủ của tôi quay lại với 401. Điều này bởi vì trong trình duyệt preflight không gửi mã ủy quyền và do đó máy chủ quay lại với 401 và trình duyệt cho rằng CORS không được phép . Xin lưu ý rằng mã dưới đây chỉ nên được sử dụng trong máy chủ phát triển trừ khi bạn biết bạn đang làm gì.
Trong PHP bạn có thể làm điều này:
if (strtolower($_SERVER['REQUEST_METHOD']) === 'options') {
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type, Authorization');
header('Access-Control-Allow-Credentials: true');
echo 'Allowed';
exit;
}
HOẶC Nginx
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
Nên nhớ bất cứ điều gì tiêu đề bạn đang gửi đến máy chủ, bạn phải được thêm vào khác Access-Control-Allow-Headers danh sách.
Tôi đọc tài liệu về "Bật yêu cầu nguồn gốc trong ASP.NET Web API" và bạn nên có tiêu đề này trong phản hồi. Xem phần "Cách hoạt động của CORS" trong trang này: http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#how-it-works. –
*** Tôi đang đóng nó, bởi vì nó chỉ là một lỗi đánh máy cho mỗi OP *** – Win
tôi nghĩ rằng vấn đề này trong thuộc tính máy chủ xem: http://stackoverflow.com/questions/36825429/angular-2-no -Điều khiển-cho phép-nguồn gốc-header-là-hiện-on-the-yêu cầu –