Download - Charles

Transcript
Page 1: Charles

DEBUGGING WITH CHARLESKeegan Street (@kstre)

Front End Dev at Deloitte Digital

Tuesday, 31 July 12

Page 2: Charles

What is Charles?

CharlesBrowsers/apps

An HTTP proxy sitting between your browsers/apps and the Internet.

The Internet

Tuesday, 31 July 12

Page 3: Charles

Features of Charles• Record Requests

• Throttling

• Breakpoints

• SSL Proxying

• Reverse Proxy

• Port Forwarding

• Cache Busting Tool

• Block Cookies Tool (for testing)

• Local Mappings

• Remote Mappings

• Automatic Rewrite Tool

• Blacklist

• DNS Spoofing

• Mirroring

• Repeat/Modify Requests Tool

• Basic Load Testing

• Markup Validation

• Web Interface (could be used as an API)

• Testing Across Devices

Tuesday, 31 July 12

Page 4: Charles

Tuesday, 31 July 12

Page 5: Charles

CACHE BUSTING TOOLTuesday, 31 July 12

Page 6: Charles

A Normal HTTP Request

GET /css/global.css HTTP/1.1Host: static.southaustralia.comUser-Agent: Mozilla/5.0 ...Accept: text/css,*/*;q=0.1If-Modified-Since: Fri, 08 Jun 2012 08:24:44 GMTIf-None-Match: "06e55285045cd1:0"Referer: http://www.southaustralia.com/Accept-Language: en-usAccept-Encoding: gzip, deflateConnection: keep-alive

Tuesday, 31 July 12

Page 7: Charles

An HTTP Request with Charles “No Caching”

GET /css/global.css HTTP/1.1Host: static.southaustralia.comUser-Agent: Mozilla/5.0 ...Accept: text/css,*/*;q=0.1If-Modified-Since: Fri, 08 Jun 2012 08:24:44 GMTIf-None-Match: "06e55285045cd1:0"Referer: http://www.southaustralia.com/Accept-Language: en-usAccept-Encoding: gzip, deflateConnection: keep-alivePragma: no-cacheCache-Control: no-cache

--

++

Tuesday, 31 July 12

Page 8: Charles

Cache Busting Tool

Removed Added

Request If-Modified-Since: ...If-None-Match: ...

Pragma: no-cacheCache-control: no-cache

ResponseExpires: ...Last-Modified: ...ETag: ...

Expires: 0Cache-Control: no-cache

Works by adding and removing headers from HTTP requests and responses.

Tuesday, 31 July 12

Page 9: Charles

REMOTE MAPPINGS& LOCAL MAPPINGS

Tuesday, 31 July 12

Page 10: Charles

Remote Mappings

•Configure a mapping from one URL to another to transparently serve assets from a different location.

•Example usage: Map jquery-1.5.1.js to code.jquery.com/jquery-1.7.2.js on your production server and see if it breaks.

Tuesday, 31 July 12

Page 11: Charles

Local Mappings

•Same as remote mappings, but they are used to map remote URLs to local assets.

•Example usage: Make your production server load all JavaScript and CSS files from your local development folder.

Tuesday, 31 July 12

Page 12: Charles

Tuesday, 31 July 12

Page 13: Charles

Tuesday, 31 July 12

Page 14: Charles

Tuesday, 31 July 12

Page 15: Charles

Tuesday, 31 July 12

Page 16: Charles

Tuesday, 31 July 12

Page 17: Charles

Tuesday, 31 July 12

Page 18: Charles

Tuesday, 31 July 12

Page 19: Charles

Tuesday, 31 July 12

Page 20: Charles

Tuesday, 31 July 12

Page 21: Charles

Tuesday, 31 July 12

Page 22: Charles

BREAKPOINTS

Tuesday, 31 July 12

Page 23: Charles

Breakpoints

• Intercept requests and responses and modify them before they are sent.

• Is the front-end sending incorrect parameters? Try modifying the request.

• Is the server returning something unexpected? Try modifying the response.

Tuesday, 31 July 12

Page 24: Charles

Tuesday, 31 July 12

Page 25: Charles

Tuesday, 31 July 12

Page 26: Charles

Tuesday, 31 July 12

Page 27: Charles

Tuesday, 31 July 12

Page 28: Charles

Tuesday, 31 July 12

Page 29: Charles

Tuesday, 31 July 12

Page 30: Charles

Tuesday, 31 July 12

Page 31: Charles

Tuesday, 31 July 12

Page 32: Charles

Tuesday, 31 July 12

Page 33: Charles

Tuesday, 31 July 12

Page 34: Charles

Tuesday, 31 July 12

Page 35: Charles

Tuesday, 31 July 12

Page 36: Charles

Tuesday, 31 July 12

Page 37: Charles

www.charlesproxy.com

Tuesday, 31 July 12