{"id":752,"date":"2012-04-03T16:49:24","date_gmt":"2012-04-03T20:49:24","guid":{"rendered":"http:\/\/kellytehuna.com\/blog\/?p=752"},"modified":"2012-04-03T16:49:24","modified_gmt":"2012-04-03T20:49:24","slug":"how-i-kicked-cross-origin-resource-sharings-ass","status":"publish","type":"post","link":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/","title":{"rendered":"How I kicked Cross Origin Resource Sharing&#8217;s Ass!"},"content":{"rendered":"<p>Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment &#8211; the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing the upload to fail, with NO obvious error messages and no feedback what so ever. All I got back, was a failed message and no reason why.<!--more--><\/p>\n<p>After several days of thrashing away on this specific bug, I decided to write a small test script to make sure the logic I was using to upload in the first place was robust. The test script worked first time, with NO problems &#8211; on the domain hosting the upload handler! Seeing the success of the test script, I moved it to the domain of origin and it failed! I immediately knew what I was dealing with and started to seek out solutions! One of the first hits I came across was an article on Cross Origin Resource Sharing, or CORS. CORS is exactly what the name implies. The ability to share resources between two points of differing origin.<\/p>\n<p>Now, the reason the upload was failing was twofold:<\/p>\n<ol>\n<li>I was submitting an upload request from one domain to another.<\/li>\n<li>More importantly, I was using Javascript (more specifically, Ajax) to submit the upload request.<\/li>\n<\/ol>\n<p>Server&#8217;s, by default, will refuse requests from differing origins for reasons of security. Over the years, many forms of malicious coding have come to the fore. In recent times, Cross Site Scripting (or XSS) and Cross Site Request Forgery (or XSRF) have been two of the more favored approaches. Both XSS and XSRF depending on pieces of Javascript being executed on a remote server, instructing it to do something malicious, either to itself, or worse yet, to other clients and servers. CORS is a form of XSS!!!<br \/>\nIn my case, I was submitting from one subdomain to another (eg. foo.domain.com to bar.domain.com). I hadn&#8217;t anticipated that this would created any issues. However, because the default behavior of the server is to ONLY accept Ajax scripting calls from itself, subdomains, even if they&#8217;re hosted on the same machine, are not allowed to submit certain types of requests to each other.<\/p>\n<p>Thankfully, server technology allows us to work around this! On the server, you can create a list of domains you are willing to accept requests from. You can also create a list of HTTP headers you are willing to accept in those requests, as well at the HTTP methods (GET, POST, PUT, DELETE, etc.) that you will accept. Essentially, what you&#8217;re doing is creating a whitelist of the domains that are &#8220;safe&#8221;, the headers those domains can send you and actions those domains are allowed to perform.<\/p>\n<p>Once I figured that out, the solution was easy! I added my domain and the headers I needed to use to the whitelist and the problem literally disappeared. After 2 or 3 days of banging my head on what was a trivial problem on the surface, took less than 30 seconds to solve, once I realized what the REAL problem was!<\/p>\n<p>It just goes to show you that even after nearly a decade in the industry, there is still plenty to learn!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment &#8211; the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[11],"tags":[],"class_list":["post-752","post","type-post","status-publish","format-standard","hentry","category-software"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Kelly Te Huna\"\/>\n\t<link rel=\"canonical\" href=\"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Kelly Te Huna - The musings of a simple man...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna\" \/>\n\t\t<meta property=\"og:description\" content=\"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-04-03T20:49:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-04-03T20:49:24+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#blogposting\",\"name\":\"How I kicked Cross Origin Resource Sharing\\u2019s Ass! - Kelly Te Huna\",\"headline\":\"How I kicked Cross Origin Resource Sharing&#8217;s Ass!\",\"author\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-04-03T16:49:24-04:00\",\"dateModified\":\"2012-04-03T16:49:24-04:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#webpage\"},\"articleSection\":\"Software\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/category\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/category\\\/software\\\/#listItem\",\"position\":2,\"name\":\"Software\",\"item\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/category\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#listItem\",\"name\":\"How I kicked Cross Origin Resource Sharing&#8217;s Ass!\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#listItem\",\"position\":3,\"name\":\"How I kicked Cross Origin Resource Sharing&#8217;s Ass!\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/category\\\/software\\\/#listItem\",\"name\":\"Software\"}}]},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#organization\",\"name\":\"Kelly Te Huna\",\"description\":\"The musings of a simple man...\",\"url\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Kelly Te Huna\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8eeeb6ff37cc9f9c1e111b8bf3ac2f21676fa4195fb2abc9d4ecf72c2657c345?s=96&r=pg\",\"width\":96,\"height\":96,\"caption\":\"Kelly Te Huna\"}},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#webpage\",\"url\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/\",\"name\":\"How I kicked Cross Origin Resource Sharing\\u2019s Ass! - Kelly Te Huna\",\"description\":\"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/2012\\\/04\\\/03\\\/how-i-kicked-cross-origin-resource-sharings-ass\\\/#breadcrumblist\"},\"author\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2012-04-03T16:49:24-04:00\",\"dateModified\":\"2012-04-03T16:49:24-04:00\"},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/\",\"name\":\"Kelly Te Huna\",\"description\":\"The musings of a simple man...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"http:\\\/\\\/kellytehuna.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna","description":"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing","canonical_url":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#blogposting","name":"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna","headline":"How I kicked Cross Origin Resource Sharing&#8217;s Ass!","author":{"@id":"http:\/\/kellytehuna.com\/blog\/author\/admin\/#author"},"publisher":{"@id":"http:\/\/kellytehuna.com\/blog\/#organization"},"datePublished":"2012-04-03T16:49:24-04:00","dateModified":"2012-04-03T16:49:24-04:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#webpage"},"isPartOf":{"@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#webpage"},"articleSection":"Software"},{"@type":"BreadcrumbList","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/#listItem","position":1,"name":"Home","item":"http:\/\/kellytehuna.com\/blog\/","nextItem":{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/category\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/category\/software\/#listItem","position":2,"name":"Software","item":"http:\/\/kellytehuna.com\/blog\/category\/software\/","nextItem":{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#listItem","name":"How I kicked Cross Origin Resource Sharing&#8217;s Ass!"},"previousItem":{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#listItem","position":3,"name":"How I kicked Cross Origin Resource Sharing&#8217;s Ass!","previousItem":{"@type":"ListItem","@id":"http:\/\/kellytehuna.com\/blog\/category\/software\/#listItem","name":"Software"}}]},{"@type":"Organization","@id":"http:\/\/kellytehuna.com\/blog\/#organization","name":"Kelly Te Huna","description":"The musings of a simple man...","url":"http:\/\/kellytehuna.com\/blog\/"},{"@type":"Person","@id":"http:\/\/kellytehuna.com\/blog\/author\/admin\/#author","url":"http:\/\/kellytehuna.com\/blog\/author\/admin\/","name":"Kelly Te Huna","image":{"@type":"ImageObject","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/8eeeb6ff37cc9f9c1e111b8bf3ac2f21676fa4195fb2abc9d4ecf72c2657c345?s=96&r=pg","width":96,"height":96,"caption":"Kelly Te Huna"}},{"@type":"WebPage","@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#webpage","url":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/","name":"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna","description":"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing","inLanguage":"en-US","isPartOf":{"@id":"http:\/\/kellytehuna.com\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/#breadcrumblist"},"author":{"@id":"http:\/\/kellytehuna.com\/blog\/author\/admin\/#author"},"creator":{"@id":"http:\/\/kellytehuna.com\/blog\/author\/admin\/#author"},"datePublished":"2012-04-03T16:49:24-04:00","dateModified":"2012-04-03T16:49:24-04:00"},{"@type":"WebSite","@id":"http:\/\/kellytehuna.com\/blog\/#website","url":"http:\/\/kellytehuna.com\/blog\/","name":"Kelly Te Huna","description":"The musings of a simple man...","inLanguage":"en-US","publisher":{"@id":"http:\/\/kellytehuna.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Kelly Te Huna - The musings of a simple man...","og:type":"article","og:title":"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna","og:description":"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing","og:url":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/","article:published_time":"2012-04-03T20:49:24+00:00","article:modified_time":"2012-04-03T20:49:24+00:00","twitter:card":"summary_large_image","twitter:title":"How I kicked Cross Origin Resource Sharing\u2019s Ass! - Kelly Te Huna","twitter:description":"Just this past week I was working on a project that required me to write an uploader script. Nothing new or revolutionary here. There was, however, one major fly in the ointment - the upload handling script was being hosted on a different domain to script that was submitting the upload request! This was causing"},"aioseo_meta_data":{"post_id":"752","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-10-23 01:29:14","updated":"2026-04-26 00:45:46","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/kellytehuna.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/kellytehuna.com\/blog\/category\/software\/\" title=\"Software\">Software<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow I kicked Cross Origin Resource Sharing\u2019s Ass!\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"http:\/\/kellytehuna.com\/blog\/"},{"label":"Software","link":"http:\/\/kellytehuna.com\/blog\/category\/software\/"},{"label":"How I kicked Cross Origin Resource Sharing&#8217;s Ass!","link":"http:\/\/kellytehuna.com\/blog\/2012\/04\/03\/how-i-kicked-cross-origin-resource-sharings-ass\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2FJaA-c8","jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/posts\/752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":2,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/posts\/752\/revisions"}],"predecessor-version":[{"id":754,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/posts\/752\/revisions\/754"}],"wp:attachment":[{"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/categories?post=752"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kellytehuna.com\/blog\/wp-json\/wp\/v2\/tags?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}