2012-06-18 25 views
6

Tôi đang cố gửi yêu cầu XHR từ tiện ích mở rộng của Google Chrome đến một tên miền khác. Điều này sẽ làm việc tốt, nhưng tôi cần phải gửi các tên miền cookie với yêu cầu. Bất kỳ cách nào để làm điều này?Gửi yêu cầu XHR từ tiện ích mở rộng của Chrome bằng cookie

+0

Bạn có thể sử dụng API ['webRequest'] (http://code.google.com/chrome/extensions/webRequest.html#event-onBeforeSendHeaders) để sửa đổi tiêu đề, bao gồm' Cookie'. Bạn có thể tìm thấy ví dụ về chỉnh sửa tiêu đề + giả mạo UA [tại đây] (http://stackoverflow.com/a/10339902/938089?associate-a-custom-user-agent-to-a-specific-google-chrome-page -chuyển hướng). –

+0

Tại sao bạn theo ấn tượng rằng Chrome sẽ không gửi cookie của người dùng? Tôi chỉ thử nghiệm nó, và nó. Trang web có trong quyền của bạn không? –

+0

Huh. Lỗi của tôi. Nó chắc chắn không gửi cookie với yêu cầu. – nathancahill

Trả lời

5

Đảm bảo rằng các quyền manifest.jsonthiết lập đúng cách.

Bạn phải đặt đúng quyền yêu cầu miền chéo trang web trong số manifest.json của tiện ích mở rộng chrome của mình. Khi được thực hiện đúng cách, các cookie đã được đặt cho tên miền được nhắm mục tiêu sẽ được gửi cùng với yêu cầu bạn đang thực hiện cho miền đó. manifest.json documentation

Bạn phải đặc biệt cẩn thận khi chơi với localhost:port_number. Bạn sẽ cần chỉ định miền đó đầy đủ trong số manifest.json để miền hoạt động. Tôi đã kết thúc với những hành vi khó xử khi miền localhost của tôi KHÔNG được chỉ định đầy đủ.

Đây là cách bạn muốn chỉ định miền localhost của bạn trong manifest.json gia hạn của bạn (nếu có ý nghĩa):

... 
"permissions": [ 
    "http://localhost:3000/" 
    ], 
... 

Nếu cookie bạn muốn gửi đến lĩnh vực mục tiêu không được thiết lập nào, bạn có thể làm như vậy bằng cách sử dụng phương thức chrome.cookies.set và chỉ định tên miền bạn muốn thông qua đối tượng domain thuộc tính bạn chuyển sang phương thức set. Tài liệu có tại đây: chrome.cookies.set.

+1

Tại sao localhost cung cấp quyền đối với trang web chéo? – itchyspacesuit

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