Tôi đang cố gắng cung cấp phản hồi cho phương thức HTTP OPTIONS với tiêu đề Access-Control-Allow-Origin sao chép nội dung của tiêu đề Gốc trong yêu cầu.Tiêu đề Access-Control-Allow-Origin không hoạt động - Tôi đang làm gì sai?
Điều này dường như không hoạt động, vì những lý do tôi không thể tìm ra.
tl; dr: phản hồi từ OPTIONS nói:
Access-Control-Allow-Origin: http://10.0.0.105:9294
GET tiếp theo có:
Origin:http://10.0.0.105:9294
Chrome nói:
Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin
wtf không?
Xem chi tiết ...
Bằng cách nhìn trong cửa sổ công cụ phát triển của Chrome, các tiêu đề yêu cầu là:
OPTIONS /user/kris HTTP/1.1
Host: 10.0.0.104:8080
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://10.0.0.105:9294
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1
Access-Control-Request-Headers: origin, x-requested-with, content-type, accept
Accept: */*
Referer: http://10.0.0.105:9294/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Các tiêu đề phản ứng là:
HTTP/1.0 200 OK
Date: Mon, 13 Aug 2012 11:23:45 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS
Access-Control-Max-Age: 10
Access-Control-Allow-Origin: http://10.0.0.105:9294
Access-Control-Allow-Headers: X-Requested-With, Authorization, X-Huzu-User, Content-Type, Accept
Content-Type: text/html; charset=UTF-8
Sau jQuery gửi nó OPTIONS yêu cầu và nhận được phản hồi ở trên, 2 điều kỳ lạ xảy ra. Câu trả lời OPTIONS (mà là một 200) xuất hiện trong các nhà phát triển giao diện điều khiển như một lỗi:
OPTIONS http://10.0.0.104:8080/user/kris 200 (OK)
Sau đó một yêu cầu GET bị từ chối. Lỗi trong bảng điều khiển:
XMLHttpRequest cannot load http://10.0.0.104:8080/user/kris. Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin.
Tôi không thể hiểu tại sao không. Tôi đang làm gì sai?
Tôi không có một ví dụ thất bại tối thiểu của mã jQuery sẽ sử dụng bất kỳ để đăng ở đây. Giả sử không có gì lạ về mã javascript, nghĩa là nó chỉ là một jQuery duy nhất nhận được(), dẫn đến yêu cầu OPTIONS được đăng ở trên. Câu hỏi của tôi là: có gì sai với câu trả lời? – scav
Chỉ là tôi hoặc có sự khác biệt giữa url máy chủ (10.0.0.104:8080) và url của người giới thiệu (10.0.0.105:9294/)? – rene
@rene yeah. Máy chủ của tôi là ứng dụng python wsgi chạy trên máy cục bộ của tôi (10.0.0.104:8080) và thử nghiệm chéo trang web đang diễn ra từ trang tôi đang tải từ 10.0.0.105:9294.Tôi không biết tác dụng của người giới thiệu trên điều khiển truy cập là gì. Bạn có nghĩ rằng nó có liên quan? Nếu vậy, tôi phải làm gì với nó? – scav