37
DEBUGGING WITH CHARLES Keegan Street (@kstre) Front End Dev at Deloitte Digital Tuesday, 31 July 12

Charles

Embed Size (px)

DESCRIPTION

An introduction to the Charles Debugging Proxy. This presentation was given at Melbourne Web Developers' Meetup on July 25, 2012.

Citation preview

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