2011-11-22 49 views
18

Bất kỳ ai cũng biết nếu có javascript hoặc jquery chung, tôi có thể thay đổi liên kết giới thiệu từ tiêu đề trong cuộc gọi http ajax?thay đổi liên kết giới thiệu của Bài đăng Ajax

về cơ bản tôi muốn nó được gửi từ trang của tôi nhưng có một liên kết giới thiệu từ một trang khác. Bất kỳ thông tin sẽ là tuyệt vời.

+0

Tôi nghĩ điều này có thể hữu ích: http://stackoverflow.com/questions/220231/accessing-http-headers-in-javascript – mikeY

+0

Thông thường, bạn chỉ có thể gửi yêu cầu tới miền của riêng bạn. Tại sao bạn muốn đánh lừa máy chủ của riêng mình thay đổi người giới thiệu? –

+0

Có thể trùng lặp của [url giới thiệu bộ với yêu cầu ajax] (http://stackoverflow.com/questions/8798706/set-referer-url-with-ajax-request) – user2284570

Trả lời

39

Trình duyệt sẽ ghi đè liên kết giới thiệu luôn cho các thử nghiệm mà tôi đã thực hiện. Có nghĩa là bạn không thể thay đổi liên kết giới thiệu của cuộc gọi ajax.

+30

Cảm ơn Chúa, bạn không thể;) –

+0

Tôi có thể chắc chắn rằng nếu trình duyệt không gửi một người giới thiệu, tôi sẽ được gửi? – xpy

+2

"Có nghĩa là bạn không thể thay đổi liên kết giới thiệu của cuộc gọi ajax" - tốt, ngoại trừ với người chơi hoặc bất kỳ thứ gì khác xuất hiện giữa trình duyệt và máy chủ;) – Mtz

6

Bạn có thể sử dụng .setRequestHeader('referer', 'foo'), nhưng tôi không chắc liệu trình duyệt có thay thế bằng trình duyệt phù hợp hay không.

qua jQuery, phương pháp .ajax() phép tiêu đề cũng như (.get().post() không)

Lưu ý rằng có rất ít điểm để làm điều này là bạn không thể làm AJAX cross-domain và thậm chí cố gắng làm điều này có thể kích hoạt các quy tắc bảo mật XHR trong một số trình duyệt và chỉ dừng hoàn toàn yêu cầu.

+1

trình duyệt ghi đè lên người giới thiệu: \ thanks mặc dù – fmsf

+0

Damn I mong muốn điều này là có thể - tôi đang tải 'các phần' vào một lớp phủ, ví dụ nhấp vào liên kết chỉnh sửa cho một mục sẽ hiển thị lớp phủ có biểu mẫu chỉnh sửa trong đó, trong khi vẫn giữ danh sách các mục trong nền. Tôi muốn thay đổi liên kết giới thiệu thành URL 'một phần', vì vậy tôi có thể chọn nó trong biểu mẫu tiếp theo (vì vậy bạn có thể nhấp vào liên kết để tải trang khác vào lớp phủ và liên kết ngược sẽ hiển thị biểu mẫu trước đó). Thật không may bây giờ tôi phải tìm một cách khác để làm điều này. 1 cho thực sự làm một số xét nghiệm về điều này. – ClarkeyBoy

+0

Ngay cả khi trình duyệt được thay đổi, đây thực sự là câu trả lời về cách thực hiện. Obviolsy là tốt để biết về chức năng trình duyệt, nhưng điều đó không có nghĩa là không thể làm điều đó. Tôi không biết bạn có thể cần phải làm điều đó, nhưng tôi rất vui khi biết. Cảm ơn. – erm3nda

3

Bạn luôn có thể sử dụng này:

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("header key", "header value")} 
}) 

Nhưng dĩ nhiên, vì trình duyệt có thể có một ý kiến ​​khác nhau về tiêu đề referer. Điều này cần được kiểm tra :)

+4

Chắc chắn bị Chrome từ chối [17.0.963.56]. Nếu bất cứ ai muốn thử nghiệm một khả năng trình duyệt khác, tôi thiết lập một vài câu lệnh jsFiddles: [một với 'jQuery.ajaxSetup'] (http://jsfiddle.net/patridge/h4Lvp/) và [một với một tùy chọn trên một' Cuộc gọi jQuery.ajax'] (http://jsfiddle.net/patridge/amA3W/). – patridge

Các vấn đề liên quan