Trong ứng dụng của tôi, tôi cho phép người dùng mở một trang bên ngoài trong UIWebView được nhúng. Tôi có thể đặt tiêu đề người giới thiệu được gửi cùng với yêu cầu đó không? Tôi muốn ứng dụng của mình nhận được 'tin cậy' khi người dùng mở các trang bên ngoài này.Chỉ định tham chiếu HTTP trong UIWebView được nhúng
Trả lời
Đặt referer sử dụng - setValue:forHTTPHeaderField:
NSMutableURLRequest* request = ...;
[request setValue:@"https://myapp.com" forHTTPHeaderField: @"Referer"];
Nhưng lưu ý rằng theo RFC HTTP bạn không nên, bởi vì ứng dụng của bạn không được địa chỉ sử dụng một URI:
Trường Referer PHẢI KHÔNG được gửi nếu URI yêu cầu được lấy từ một nguồn không có URI riêng, chẳng hạn như đầu vào từ bàn phím người dùng .
... trừ khi bạn đang sử dụng giao thức tùy chỉnh được liên kết với ứng dụng của bạn (myapp: //blah.com/blah).
Bạn có thể create one và gọi loadRequest: theo cách thủ công hoặc chặn yêu cầu bình thường của người dùng.
- (BOOL) webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType) navigationType
{
NSDictionary *headers = [request allHTTPHeaderFields];
BOOL hasReferer = [headers objectForKey:@"Referer"]!=nil;
if (hasReferer) {
// .. is this my referer?
return YES;
} else {
// relaunch with a modified request
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSURL *url = [request URL];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
[request setValue:@"https://whatever.com" forHTTPHeaderField: @"Referer"];
[self.webView loadRequest:request];
});
});
return NO;
}
}
Tôi chưa tự sử dụng, nhưng có vẻ như NSURLProtocol
là cách được chấp thuận để chặn và sửa đổi yêu cầu URL. Dưới đây là hướng dẫn: http://www.raywenderlich.com/59982/nsurlprotocol-tutorial
Tôi đang sử dụng giải pháp của bạn để gửi yêu cầu đến NSMutableURLRequest
, nhưng vì nó không được ghi nhận rằng đây là yêu cầu có thể thay đổi, có một số rủi ro mà Apple có thể sử dụng đối tượng không thay đổi trong tương lai.
- 1. Tham chiếu thông tin trong các bản dựng được chỉ định trong tham số chạy [Hudson]
- 2. Thay đổi tham chiếu http trong javascript
- 3. Chỉ định giá trị mặc định cho loại tham chiếu
- 4. Cách tìm ra phông chữ nào được tham chiếu và được nhúng trong tài liệu PDF
- 5. Cách xoay video nhúng UIWebView
- 6. tham chiếu giá trị điều tra với chỉ mục được chỉ định
- 7. JAVA: tham chiếu được xác định trong vòng lặp
- 8. Tôi làm cách nào để sử dụng bao gồm trong xsd được nhúng tham chiếu một xsd được nhúng khác?
- 9. Chỉ định đối số tham chiếu cho biến cục bộ
- 10. Chỉ định tham chiếu theo dereferencing con trỏ NULL
- 11. Tham chiếuMỗi: xác định không được xác định trong khi nhúng Fuelux vào datagrid.js
- 12. Lỗi "Tham chiếu đến hàm" không được xác định
- 13. Nuget: chỉ định phụ thuộc mà không có tham chiếu được thêm
- 14. MATLAB: lệnh force doc để mở trang HTML tham chiếu được chỉ định
- 15. Tham chiếu không bắt buộcLỗi: django không được xác định
- 16. Mongoid: chuyển đổi tài liệu nhúng thành bộ sưu tập được tham chiếu/riêng
- 17. Tham chiếu không bắt buộcLỗi: google không được xác định
- 18. Tham chiếu không bắt buộcLỗi: cordova không được xác định
- 19. Tham chiếu tiêu đề HTTP có được gửi khi truy cập trang http từ trang https không?
- 20. Tham số được chuyển bởi tham chiếu const được trả về bởi tham chiếu const
- 21. "Tham chiếu được tạo ra cho lắp ráp interop nhúng" nghĩa là gì?
- 22. Cảnh báo tham chiếu biến cố định __weak mục tiêu-C không được chỉ định trên biến tự động "
- 23. Thêm tham chiếu thêm tham chiếu sai
- 24. Chúng tôi có thể chỉ định lại tham chiếu trong C++ không?
- 25. chuyển đổi ngầm định: tham chiếu const vs tham chiếu không const vs phi tham khảo
- 26. Lỗi lạ - CS0012: Loại x được xác định trong một assembly không được tham chiếu
- 27. Loại 'System.Object' được định nghĩa trong một assembly không được tham chiếu - Ứng dụng Windows Store
- 28. Làm cách nào để buộc R sử dụng mức yếu tố được chỉ định làm tham chiếu trong hồi quy?
- 29. Làm cách nào để tham chiếu id phần tử html được chỉ định trong visualforce và chuyển vào hàm javascript?
- 30. không xác định tham chiếu đến `stdscr '
Cảm ơn ghi chú từ RFC. Tôi không biết điều đó. Màn hình mà người dùng của tôi bật khi họ mở liên kết bên ngoài trong trình duyệt có URI của riêng nó, vì vậy tôi không áp dụng điều đó cho tôi. –
Tôi lấy trường hợp NSMutableURLRequest từ đâu? UIWebViewDelegate không cung cấp cho tôi phiên bản Mutable. Tôi tìm thấy một số tài liệu tham khảo nói rằng tôi có thể đáng tin cậy đúc nó, nhưng tôi tự hỏi nếu có một cách đẹp hơn. –
Tôi không biết nếu đó là kosher, nhưng bạn có thể đánh chặn và khởi chạy lại yêu cầu. – Jano