Vấn đề của tôi là như sau. Tôi có một trang XHTML 1.1 có một trường biểu mẫu và trường nhập. Một trong các trường nhập chứa giá trị là một URI. URI này chứa các cặp khóa-giá trị có dấu và (&) làm dấu phân cách đối số, sẽ được chuyển qua dưới dạng yêu cầu GET bởi ứng dụng web khác trong trình duyệt.Làm thế nào để XHTML 1.1 xác nhận một dấu và không thoát nó?
Thông thường tôi sẽ sử dụng pháp nhân &
để tạo ký hiệu và để xác thực mã là XHTML 1.1. Vấn đề của tôi ở đây là ứng dụng không nhận được yêu cầu GET, vì (như mong đợi) trình duyệt không hiểu cách xử lý &
trong URI. Vì vậy, câu hỏi của tôi thực sự là cách viết một ký hiệu và không sử dụng thực thể HTML, do đó trình duyệt vẫn nhận ra nó là dấu phân tách đối số và yêu cầu GET được truyền vào đúng ứng dụng web.
Tôi đã thử Hex (% 26) mã hóa dấu và nhưng trình duyệt vẫn không "dịch" nó trở lại thành một ký tự thích hợp &.
Một câu hỏi liên quan, nhưng nó không cung cấp câu trả lời chính xác cho câu hỏi Tôi hỏi:
XHTML and & (Ampersand) encoding
"(như dự kiến) trình duyệt không hiểu làm thế nào để xử lý '&' trong URI" - đó là ** không ** như mong đợi, bạn không nên thấy '&' trong thanh địa chỉ trừ khi bạn đã mã hóa kép nó. –
Vui lòng đọc lại câu hỏi. Các ký hiệu và là một phần của một URI chứa bên trong trường giá trị của đầu vào. Sau khi biểu mẫu được gửi, người dùng sẽ được trả về cùng một vị trí, chính xác như được viết. Điều này có nghĩa là tôi để lại các ký tự không được mã hóa nhưng không xác nhận được, hoặc tôi mã hóa chúng với vấn đề trình duyệt sẽ nhận thực thể HTML trong thanh địa chỉ và không chuyển chuỗi truy vấn đến ứng dụng tiếp theo trong tiến trình. –
Trình duyệt sẽ giải mã '&' thành '&' khi chuyển đổi HTML thành DOM. Sau đó nó sẽ mã hóa '&' thành '% 26' khi xây dựng dữ liệu URL hoặc dữ liệu được mã hóa dạng x-url. Nếu nó không hoạt động, thì tôi nghi ngờ bạn đang xử lý dữ liệu không chính xác trên máy chủ. – Quentin