2016-12-05 18 views
6

Chúng tôi có ứng dụng React tải một số dữ liệu không đồng bộ từ một tên miền khác. Các yêu cầu được thực hiện bằng cách sử dụng isomorphic-fetch ở chế độ cors và các yêu cầu cũng như phản hồi đều ổn và hoạt động chính xác khi thử nghiệm bằng trình duyệt của riêng tôi.Googlebot và các phản hồi CORS trống

Chúng tôi đã giám sát các phản hồi và đăng nhập thất bại trở lại ứng dụng của chúng tôi để phân tích.

Mặc dù phần lớn thời gian đều tốt (và mọi thứ dường như được lập chỉ mục chính xác và hiển thị tốt trong Google), chúng tôi vẫn thấy rất nhiều lỗi, chỉ cho Googlebot. . Gỡ lỗi đối tượng phản hồi Tôi thấy rằng status là 200, nhưng statusText trống. Câu trả lời không có nội dung (và do đó không có phương thức .json hoặc .text) và không có tiêu đề (không phải là trường hợp) và chế độ được đặt chính xác là cors (không phải opaque, có thể giải thích một số khác lạ).

Từ sự hiểu biết của tôi về CORS, tất cả điều này đều nhìn trên bảng về các tiêu đề được gửi và nhận, vậy tại sao Googlebot có quá nhiều vấn đề liên tục? Googlebot đang nói rằng nó có một phản ứng HTTP 200 (thành công, Promise không bị từ chối), nhưng nó thiếu tất cả những thứ đi kèm với HTTP 200 responose - nó không có thân và không có phần đầu. Tại sao Googlebot không trả lại phản hồi với tiêu đề và nội dung (như được mô tả bên dưới)?

Yêu cầu preflight bình thường trông như thế này (từ DevTools Chome) (thêm dấu gạch chéo trong */\* thêm để ngăn chặn SO nghĩ rằng đó là một cái mở comment)

Accept:*/\* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6 
Access-Control-Request-Headers:content-type, x-apikey 
Access-Control-Request-Method:POST 
Cache-Control:no-cache 
Connection:keep-alive 
DNT:1 
Host:my.host.net 
Origin:http://my.origin.net 
Pragma:no-cache 
Referer:http://my.origin.net/ 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.100 Safari/537.36 

Và phản ứng preflight trông như thế này

Access-Control-Allow-Headers:content-type,x-apikey 
Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Length:0 
Date:Mon, 05 Dec 2016 00:55:05 GMT 
Expires:-1 
Pragma:no-cache 
Server:Microsoft-IIS/8.5 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 

Sau đó, theo sau là yêu cầu thực tế trông như thế này (được gửi dưới dạng POST với cơ thể JSON)

accept:application/json 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Length:62 
content-type:application/json 
DNT:1 
Host:someapi.net 
Origin:http://my.origin.net 
Pragma:no-cache 
Referer:http://my.origin.net/ 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.100 Safari/537.36 
x-apikey:someapikey 

nào trả về một phản ứng như thế này (với một cơ thể JSON)

Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Length:33576 
Content-Type:application/json; charset=utf-8 
Date:Mon, 05 Dec 2016 00:55:05 GMT 
Expires:-1 
Pragma:no-cache 
Server:Microsoft-IIS/8.5 
X-AspNet-Version:4.0.30319 
X-Powered-By:ASP.NET 
+0

Không, tôi đã có một vấn đề dán bản sao khi tôi đang cố gắng loại bỏ suy nghĩ SO '*/*' có nghĩa là mở một nhận xét trong khối mã. Đã xóa một lần nữa. –

+0

Không chắc chắn vấn đề là gì? – guest271314

+0

Googlebot tuyên bố rằng nó có phản hồi HTTP 200 nhưng không có nội dung và không có tiêu đề. Thử nghiệm ở nơi khác không thể tái tạo và sự cố chỉ xảy ra với Googlebot. Tôi sẽ chỉnh sửa để cố gắng làm rõ hơn. –

Trả lời

2

Kiểm tra địa chỉ IP của GoogleBot không gọi

Nó có thể là một diễn viên bất chính, giả vờ là google

Kiểm tra địa chỉ IP như được mô tả tại đây:

https://support.google.com/webmasters/answer/80553?hl=en

+0

Có, điểm tốt; Tôi đã thêm đăng nhập IP vào việc ghi nhật ký lỗi vì vậy chúng tôi sẽ xem những gì xảy ra. –

+0

Dường như hợp pháp, ví dụ: 'crawl-66-249-79-185.googlebot.com'. –

+0

Hmmm, bạn đang gỡ lỗi các yêu cầu này như thế nào? – stujo

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