Tôi đang tạo một API JSON rất đơn giản trong Java. Nó thực sự là một mod Project Zomboid phục vụ tọa độ đối tượng. Đây là cách xử lý HTTP của tôi trông giống như:Tiêu đề CORS 'Access-Control-Allow-Origin' không khớp ... nhưng nó‼
public class JSONZomboid implements HttpHandler
{
@Override
public void handle(HttpExchange t) throws IOException {
// HEADERS
Headers headers = t.getResponseHeaders();
headers.set("Content-Type", "text/json");
headers.set("Access-Control-Allow-Origin", "pzmap.crash-override.net");
t.sendResponseHeaders(200,0);
//BODY
OutputStream os = t.getResponseBody();
os.write("{\n".getBytes());
// generate JSON here
os.write("}".getBytes());
os.close();
}
}
Tôi muốn tải này vào dự án bản đồ dự án Zomboid sử dụng UserScript có nghĩa là tôi cần phải kích hoạt CORS để kết nối. Này được thực hiện thông qua mã đơn giản:
PlayerRenderer.prototype.fetchInfo = function() {
$.get("http://127.0.0.1:8000/test", {}, this.displayPoints.bind(this));
}
Nhưng tôi nhận được lỗi này:
warning http://images.michaelsync.net/images/2007/09/warningicon.png Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/test . (Reason: CORS header 'Access-Control-Allow-Origin' does not match 'pzmap.crash-override.net').
Ngay cả trong giao diện điều khiển tôi có thể thấy rõ lỗi là sai lầm:
Nếu Tôi đã không ghét CORS, tôi bắt đầu ghét nó ngay bây giờ. Bạn có thể vui lòng cho tôi biết chuỗi thực sự thuộc về tiêu đề gốc cho phép không?
Tiêu đề phải có tên máy chủ của trang web được phép truy cập nội dung. Nếu bạn đang tải các trang của bạn từ một trang web được lưu trữ tại 'pzmap.crash-override.net' thì nó sẽ hoạt động. Lỗi này cho bạn biết tiêu đề chứa gì, không phải tên miền nguồn là gì. – Pointy
Bạn có thể xem trang web nào tôi đang tải từ các tiêu đề yêu cầu ('Origin' và' Referer'). –
Thật ra rất khó để xem chi tiết trong những hình ảnh đó trên một màn hình nhỏ:/ – Pointy