cache-control in google dev tools - google-chrome-devtools

I'm playing around with Chrome Dev Tools and I have a question regarding the use of cache-control.
I have a simple app with an app.js and an application.css, and when I check disable cache in the toolbar both resources are downloaded from the server, but when I uncheck it, app.js is not downloaded again as it's in the browser cache, but the application.css is downloaded again.
I checked the response headers expecting to see a cache-control: no-cache for the application.css but... it's not there. Actually, the information in the response header regarding cache-control for application.css and for app.js is the same: there's no information.
Anyone knows or have any idea why this could be?
Thanks
EDIT: request and response headers
"request": {
"method": "GET",
"url": XXXXXXXXXX,
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Accept-Encoding",
"value": "gzip, deflate, sdch, br"
},
{
"name": "Host",
"value": XXXXXXXXXX
},
{
"name": "Accept-Language",
"value": "es-ES,es;q=0.8"
},
{
"name": "Upgrade-Insecure-Requests",
"value": "1"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
},
{
"name": "Accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
},
{
"name": "Referer",
"value": XXXXXXXXXX
},
{
"name": "Cookie",
"value": XXXXXXXXXX
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Cache-Control",
"value": "max-age=0"
}
],
"queryString": [],
"cookies": [
{
XXXXXXXXXX
}
],
"headersSize": 527,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"headers": [
{
"name": "Date",
"value": "Fri, 21 Apr 2017 08:41:14 GMT"
},
{
"name": "Last-Modified",
"value": "Sun, 16 Apr 2017 11:17:04 GMT"
},
{
"name": "Server",
"value": "nginx/1.10.1"
},
{
"name": "ETag",
"value": "\"58f352b0-7ad\""
},
{
"name": "Content-Type",
"value": "text/html"
},
{
"name": "Connection",
"value": "keep-alive"
},
{
"name": "Accept-Ranges",
"value": "bytes"
},
{
"name": "Content-Length",
"value": "1965"
}
],

Related

Send mail from Mailhog to Gmail but gmail can't receive mail

I'm try to use api in mailhog
Get /api/v1/messages
[
{
"ID": "ZOif6IQhqZgViFi2HO4e8KBSJBAzlwwJ-92rCBccNU8=#mailhog.example",
"From": {
"Relays": null,
"Mailbox": "developer-send-mail",
"Domain": "gmail.com",
"Params": ""
},
"To": [
{
"Relays": null,
"Mailbox": "developer-recv-mail",
"Domain": "gmail.com",
"Params": ""
}
],
"Content": {
"Headers": {
"Message-ID": [
"ZOif6IQhqZgViFi2HO4e8KBSJBAzlwwJ-92rCBccNU8=#mailhog.example"
],
"Received": [
"from smtp.gmail.com by mailhog.example (MailHog)\r\n id ZOif6IQhqZgViFi2HO4e8KBSJBAzlwwJ-92rCBccNU8=#mailhog.example; Mon, 22 Nov 2021 18:30:16 +0000"
],
"Return-Path": [
"<developer-send-mail#gmail.com>"
]
},
"Body": "test my message\r\nnew1\r\nmulti line",
"Size": 33,
"MIME": null
},
"Created": "2021-11-22T18:30:16.822037969Z",
"MIME": null,
"Raw": {
"From": "developer-send-mail#gmail.com",
"To": [
"developer-recv-mail#gmail.com"
],
"Data": "test my nessaje\r\nnew1\r\nmulti line",
"Helo": "smtp.gmail.com"
}
},
]
and I
Post /api/v1/messages/ZOif6IQhqZgViFi2HO4e8KBSJBAzlwwJ-92rCBccNU8=#mailhog.example/release
Body
{
"Host": "smtp.gmail.com",
"Port": "587",
"Username": "developer-send-mail#gmail.com",
"Password": "MyMailPassword",
"Mechanism": "PLAIN",
"Email": "developer-send-mail#gmail.com"
}
Response code: 200
but in gmail developer-recv-mail#gmail.com can't receive this email
In your post value for release endpoint, you specify an Email value of developer-send-mail#gmail.com. Since this value is the recipient, I believe this should be developer-recv-mail#gmail.com from the sound of it?
https://github.com/mailhog/MailHog/blob/master/docs/APIv1.md#post-apiv1messages-message_id-release

Powershell Invoke-RestMethod in LogicApps

For this line of code in Powershell I used an HTTP connector in Logic Apps using Joey Cai's advice.
$body_login = #{"method"="login";"username"="qq";"password"="qqq"} | ConvertTo-Json
Now, I have this line of code in Powershell. How do I do the equivalent in LogicApps?
$Conn = Invoke-RestMethod -Method Post $uri_login -Headers $header -Body $body_login
Do I use the same HTTP connector or do I need something else? It's the Invoke-RestMethod syntax that I'm unsure of in Logic Apps.
I will need the output in JSON format, so I can parse it.
Thanks for the first answer. I need to know what to put in the uri, header and body. Here is the rest of the code which I should have provided before.
$baseuri = "https://test"
$header = #{
"Accept" = "text/json"
"Content-Type" = "text/json"
}
$G_header = #{"Accept" = "text/json"}
Write-Output "Login ..."
$uri_login = $baseuri + "SPDEDJSONSERVICE.LOGIN"
$body_login = #{"method"="login";"username"="qqq";"password"="qqq"} | ConvertTo-Json
$Conn = Invoke-RestMethod -Method Post $uri_login -Headers $header -Body $body_login
$SessionID = $conn.sessionID</code>
How do I do the equivalent in LogicApps?
As I have provided before, use HTTP connector.
I will need the output in JSON format, so I can parse it.
You could use Compose to work with data in JSON format.
1.Add Headers/Body which you want into Compose.
2.Add Outputs into Parse JSON. Copy the HTTP response Headers/Body info, and click use sample payload to generate schema, then parse Headers in it.
3.Use Initialize variable to get info what you want such as Date.
The result:
With Azure Logic Apps and the built-in HTTP action, you can create automated tasks and workflows that regularly send requests to any HTTP or HTTPS endpoint.
Sign in to the Azure portal. Open your logic app in Logic App Designer.
Under the step where you want to add the HTTP action, select New step.
To add an action between steps, move your pointer over the arrow between steps. Select the plus sign (+) that appears, and then select Add an action.
Under Choose an action, in the search box, enter "http" as your filter. From the Actions list, select the HTTP action.
Select HTTP action
For your scenarion you can use Basic Authentication.
This seems to work, but I could not have done it without Joey
<code>
{
"definition": {
"$schema":
"https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-
01/workflowdefinition.json#",
"actions": {
"HTTP_2": {
"inputs": {
"body": {
"FORMAT": "payload",
"FROM": 0,
"GRIDID": "PROP",
"GRIDVIEW": "1",
"HITS": 100,
"ORDERBY": "PR_DATESOLD",
"PROFILE": [
{
"PR_NAME": "G*",
"PR_USER1": "GENERATED"
}
],
"sessionID": "#body('Parse_JSON3')['sessionID']"
},
"headers": {
"Accept": "text/json",
"Content-Type": "text/json"
},
"method": "POST",
"uri": "#variables('uri_DefGrid')"
},
"runAfter": {
"Parse_JSON3": [
"Succeeded"
]
},
"type": "Http"
},
"Initialize_Header": {
"inputs": {
"variables": [
{
"name": "Header",
"type": "string",
"value": "{\"Accept\":\"text/json\",\"Content-
Type\":\"text/json\"}"
}
]
},
"runAfter": {
"Initialize_body_login": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_body_DefGrid": {
"inputs": {
"variables": [
{
"name": "body_DefGrid",
"type": "string",
"value": "json(#{body('HTTP_2')})"
}
]
},
"runAfter": {
"HTTP_2": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_body_login": {
"inputs": {
"variables": [
{
"name": "body_login",
"type": "string",
"value": "json(#{triggerBody()})"
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Initialize_uri_DefGrid": {
"inputs": {
"variables": [
{
"name": "uri_DefGrid",
"type": "string",
"value": "https://test/SPDEDMHAPI.GRIDGET"
}
]
},
"runAfter": {
"Initialize_uri_login": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_uri_login": {
"inputs": {
"variables": [
{
"name": "uri_login",
"type": "string",
"value": "https://test/SPDEDJSONSERVICE.LOGIN"
}
]
},
"runAfter": {
"Initialize_Header": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_uri_logout": {
"inputs": {
"variables": [
{
"name": "uri_logout",
"type": "string",
"value": "https://test/SPDEDJSONSERVICE.LOGOUT"
}
]
},
"runAfter": {
"Initialize_body_DefGrid": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Logout": {
"inputs": {
"body": {
"method": "logout",
"sessionID": "#body('Parse_JSON3')['sessionID']"
},
"headers": {
"Accept": "text/json",
"Content-Type": "text/json"
},
"method": "POST",
"uri": "#variables('uri_logout')"
},
"runAfter": {
"Initialize_uri_logout": [
"Succeeded"
]
},
"type": "Http"
},
"Parse_JSON3": {
"inputs": {
"content": "#triggerBody()",
"schema": {
"properties": {
"RLS_WHERE": {
"$id": "#/properties/RLS_WHERE",
"type": "string"
},
"contact": {
"type": "string"
},
"error": {
"type": "string"
},
"errorId": {
"type": "string"
},
"fullName": {
"type": "string"
},
"labellanguage": {
"type": "string"
},
"language": {
"type": "string"
},
"message": {
"type": "string"
},
"params": {
"properties": {
"WOPARTSOPT": {
"type": "string"
}
},
"required": [
"WOPARTSOPT"
],
"title": "The Params Schema",
"type": "object"
},
"role": {
"type": "string"
},
"sessionID": {
"type": "string"
},
"success": {
"type": "string"
},
"userEmail": {
"$id": "#/properties/userEmail",
"type": "string"
}
},
"required": [
"success",
"message",
"sessionID",
"language",
"labellanguage",
"error",
"errorId",
"fullName",
"role",
"contact",
"RLS_WHERE",
"userEmail",
"params"
],
"title": "The Root Schema",
"type": "object"
}
},
"runAfter": {
"Initialize_uri_DefGrid": [
"Succeeded"
]
},
"type": "ParseJson"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"HTTP": {
"inputs": {
"body": {
"method": "login",
"password": "qqq",
"username": "qqq"
},
"headers": {
"Accept": "text/json",
"Content-Type": "text/json"
},
"method": "POST",
"uri": "https://test/SPDEDJSONSERVICE.LOGIN"
},
"recurrence": {
"frequency": "Minute",
"interval": 4
},
"type": "Http"
}
}
},
"parameters": {}
}
</code>

“Successful” Static Netlify Form Submissions Don't Show in Dashboard

I have a completely static html form with some data using the netlify tag. When I submit it, I get a 200 and see the default success page, but do not see the submission in the Netlify Dashboard. I do see the form was recognized and has an entry in the dashboard, but it shows zero submissions.
Note that my issue is different from a similar question because this is a static form and my content-type is already "application/x-www-form-urlencoded" which was what was wrong in that other case.
I don't see anyone else describing this issue and I can't seem to find anything in the docs that I might be missing. Anyone seen this before and found a solution?
Here's the form:
<form name="registration" method="POST" class="registration-form" data-netlify="true" data-netlify-recaptcha="true">
<H2>Juneteenth Parade Registration Form</H2>
<p>The deadline to register for the parade is Fri. May 31, 2019.</p>
<fieldset>
<legend>CONTACT INFORMATION</legend>
<div class="registration-form">
<label for="name">Organization Name:</label><input type="text" id="name" name="name" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="contact">Contact Person:</label><input type="text" id="person" name="person" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="address">Organization Address:</label><input type="text" id="address" name="address" required minlength="4" maxlength="128" size="64">
</div>
<div class="registration-form">
<label for="phone">Phone Number:</label><input type="tel" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="###-###-####" id="phone" name="phone" required minlength="7" maxlength="28" size="14">
</div>
<div class="registration-form">
<label for="alt_phone">Alternate Phone:</label><input type="tel" pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}" placeholder="###-###-####" id="alt_phone" name="alt_phone" required minlength="7" maxlength="28" size="14">
</div>
<div class="registration-form">
<label for="email">E-mail Address:</label><input type="email" id="email" name="email" required minlength="4" maxlength="128" size="32">
</div>
</fieldset>
<fieldset>
<legend>PARADE ENTRY</legend>
<div class="description">
<label for="description">Please describe the nature of your parade entry for example; float, people walking together, band, horse and buggy, decorated car, bicycles and banners.</label> <textarea id="description" name="description" rows="3" cols="64">
</textarea>
</div>
<div class="registration-form">
<input type="checkbox" id="music" name="music">
<label for="music">Playing or performing music?</label>
</div>
<div class="number-of-people">
<label for="people">Number of people expected:</label><input type="number" id="email" name="email" required minlength="1" maxlength="4" size="4">
</div>
</fieldset>
<div data-netlify-recaptcha="true"></div>
<input type="submit" value="Submit Registration" class="submit button">
</form>
And here's the request/response:
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [
{
"startedDateTime": "2019-04-14T21:45:06.072Z",
"id": "page_4",
"title": "https://redacted.netlify.com/",
"pageTimings": {
"onContentLoad": 364.39100000006874,
"onLoad": 418.19699999996374
}
}
],
"entries": [
{
"startedDateTime": "2019-04-14T21:45:06.070Z",
"time": 225.2770000000055,
"request": {
"method": "POST",
"url": "https://redacted.netlify.com/",
"httpVersion": "http/2.0",
"headers": [
{
"name": ":method",
"value": "POST"
},
{
"name": ":authority",
"value": "redacted.netlify.com"
},
{
"name": ":scheme",
"value": "https"
},
{
"name": ":path",
"value": "/"
},
{
"name": "content-length",
"value": "585"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": "origin",
"value": "https://redacted.netlify.com"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
},
{
"name": "referer",
"value": "https://redacted.netlify.com/"
},
{
"name": "accept-encoding",
"value": "gzip, deflate, br"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.9"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 585,
"postData": {
"mimeType": "application/x-www-form-urlencoded",
"text": "form-name=registration&name=Test+Org&person=Bill&address=111+Test+Dr.&phone=111-222-3333&alt_phone=444-555-6666&email=me%40example.com&description=This+is+a+test.++++++++++++++++++++++++++++&music=on&email=1&g-recaptcha-response=03AOLTBLTRjCCETaPINwgzeeptXELZzjz9ineERJ18sHv9_Pb4ou7P70RkIz4vqEJPMME01RnXgqSjs-0f_6TUjWEL3QkkFJSd2dThUktYnI5Y-Nwl8fJx4DMU9ZBPuL1MLM-vjOiRf2ZNHU13HxrSUk3ab9j31O4R8wnTtdpG_QiQwKMxZs-pM-_L29YBA1c4HGR1IZJlxGixjk06L50CLzc6cF9y_o6RHiZ8O33hJ_36sgTWEqjeSjZUU9XHRPFkkCUK9x5LK5P5j2HFOEjpA6NbOqHyTtLGUo8CnvgwlLDiovvwASyRD0vmz0gkMTHV1LBsjoAWkSACLz1o5dh2mpdsXVZUfZo-jA",
"params": [
{
"name": "form-name",
"value": "registration"
},
{
"name": "name",
"value": "Test+Org"
},
{
"name": "person",
"value": "Bill"
},
{
"name": "address",
"value": "111+Test+Dr."
},
{
"name": "phone",
"value": "111-222-3333"
},
{
"name": "alt_phone",
"value": "444-555-6666"
},
{
"name": "email",
"value": "me%40example.com"
},
{
"name": "description",
"value": "This+is+a+test.++++++++++++++++++++++++++++"
},
{
"name": "music",
"value": "on"
},
{
"name": "email",
"value": "1"
},
{
"name": "g-recaptcha-response",
"value": "[redacted]"
}
]
}
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "status",
"value": "200"
},
{
"name": "content-type",
"value": "text/html"
},
{
"name": "date",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "age",
"value": "0"
},
{
"name": "server",
"value": "Netlify"
},
{
"name": "x-nf-request-id",
"value": "0cb00dd4-87f1-42a7-b737-913d0998120e-98519701"
}
],
"cookies": [],
"content": {
"size": 2121,
"mimeType": "text/html",
"text": "<!DOCTYPE html>\n<html>\n <head>\n <meta charset=\"utf-8\">\n\n <title>Thank you!</title>\n <link href='https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n background: rgb(14, 30, 37);\n color: white;\n overflow: hidden;\n }\n\n h1 {\n margin: 0;\n font-size: 22px;\n line-height: 24px;\n }\n\n .main {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100vh;\n width: 100vw;\n }\n\n .card {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 75%;\n max-width: 364px;\n padding: 24px;\n background: white;\n color: rgb(14, 30, 37);\n border-radius: 8px;\n box-shadow: 0 2px 4px 0 rgba(14, 30, 37, .16);\n }\n\n a {\n margin: 0;\n text-decoration: none;\n font-weight: 600;\n line-height: 24px;\n color: #00ad9f;\n }\n\n a svg {\n position: relative;\n top: 2px;\n }\n\n a:hover,\n a:focus {\n text-decoration: underline;\n color: #007A70;\n }\n\n a:hover svg path{\n fill: #007A70;\n }\n\n p:last-of-type {\n margin: 0;\n }\n </style>\n </head>\n <body>\n\n <div class=\"main\">\n <div class=\"card\">\n <div class=\"header\">\n <h1>Thank you!</h1>\n </div>\n <div class=\"body\">\n\n <p>Your form submission has been received.</p>\n\n <p>\n <a id=\"back-link\" href=\"/\">← Back to our site</a>\n </p>\n </div>\n </div>\n </div>\n <script>\n (function() {\n if (document.referrer && document.location.host && document.referrer.match(new RegExp(\"^https?://\" + document.location.host))) {\n document.getElementById(\"back-link\").setAttribute(\"href\", document.referrer);\n }\n })();\n </script>\n </body>\n</html>\n"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 2210
},
"cache": {},
"timings": {
"blocked": 2.34500000006365,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.16100000000000003,
"wait": 221.8270000000515,
"receive": 0.9439999998903659,
"_blocked_queueing": 1.86600000006365
},
"serverIPAddress": "142.93.122.177",
"_initiator": {
"type": "other"
},
"_priority": "VeryHigh",
"_resourceType": "document",
"connection": "19503",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.311Z",
"time": 126.6409999998271,
"request": {
"method": "GET",
"url": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "Referer",
"value": "https://redacted.netlify.com/"
},
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
}
],
"queryString": [
{
"name": "family",
"value": "Roboto:400,700"
},
{
"name": "subset",
"value": "latin,latin-ext"
}
],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "strict-transport-security",
"value": "max-age=31536000"
},
{
"name": "content-encoding",
"value": "br"
},
{
"name": "last-modified",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "server",
"value": "ESF"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "date",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
},
{
"name": "x-frame-options",
"value": "SAMEORIGIN"
},
{
"name": "content-type",
"value": "text/css; charset=utf-8"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "private, max-age=86400, stale-while-revalidate=604800"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "link",
"value": "<https://fonts.gstatic.com>; rel=preconnect; crossorigin"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Sun, 14 Apr 2019 21:45:06 GMT"
}
],
"cookies": [],
"content": {
"size": 4498,
"mimeType": "text/css",
"text": "[redacted]"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 854
},
"cache": {},
"timings": {
"blocked": 14.100000000016415,
"dns": 27.329,
"ssl": 46.616,
"connect": 74.052,
"send": 0,
"wait": 10.321999999880063,
"receive": 0.8379999999306165,
"_blocked_queueing": 13.277000000016415
},
"serverIPAddress": "172.217.9.170",
"_initiator": {
"type": "parser",
"url": "https://redacted.netlify.com/",
"lineNumber": 6
},
"_priority": "VeryHigh",
"_resourceType": "stylesheet",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.424Z",
"time": 48.637999999755266,
"request": {
"method": "GET",
"url": "https://fonts.gstatic.com/s/roboto/v19/KFOlCnqEu92Fr1MmWUlfBBc4.woff2",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "Referer",
"value": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext"
},
{
"name": "Origin",
"value": "https://redacted.netlify.com"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "date",
"value": "Mon, 25 Mar 2019 20:21:40 GMT"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "last-modified",
"value": "Mon, 25 Mar 2019 20:13:46 GMT"
},
{
"name": "server",
"value": "sffe"
},
{
"name": "age",
"value": "1733006"
},
{
"name": "content-type",
"value": "font/woff2"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "public, max-age=31536000"
},
{
"name": "accept-ranges",
"value": "bytes"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "content-length",
"value": "15816"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Tue, 24 Mar 2020 20:21:40 GMT"
}
],
"cookies": [],
"content": {
"size": 15816,
"mimeType": "font/woff2",
"text": "[redacted]",
"encoding": "base64"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 15920
},
"cache": {},
"timings": {
"blocked": 2.2409999998616694,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.08200000000000002,
"wait": 45.09700000001289,
"receive": 1.2179999998807034,
"_blocked_queueing": 1.9459999998616695
},
"serverIPAddress": "216.58.194.67",
"_initiator": {
"type": "script",
"stack": {
"callFrames": [
{
"functionName": "",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 20,
"columnNumber": 266
},
{
"functionName": "ready",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 10,
"columnNumber": 196
},
{
"functionName": "B",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 17,
"columnNumber": 6
}
]
}
},
"_priority": "VeryHigh",
"_resourceType": "font",
"pageref": "page_4"
},
{
"startedDateTime": "2019-04-14T21:45:06.431Z",
"time": 53.76699999987977,
"request": {
"method": "GET",
"url": "https://fonts.gstatic.com/s/roboto/v19/KFOmCnqEu92Fr1Mu4mxK.woff2",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
},
{
"name": "Referer",
"value": "https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,latin-ext"
},
{
"name": "Origin",
"value": "https://redacted.netlify.com"
}
],
"queryString": [],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 200,
"statusText": "",
"httpVersion": "http/2.0+quic/43",
"headers": [
{
"name": "date",
"value": "Mon, 25 Mar 2019 20:21:59 GMT"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "last-modified",
"value": "Mon, 25 Mar 2019 20:12:01 GMT"
},
{
"name": "server",
"value": "sffe"
},
{
"name": "age",
"value": "1732987"
},
{
"name": "content-type",
"value": "font/woff2"
},
{
"name": "status",
"value": "200"
},
{
"name": "alt-svc",
"value": "quic=\":443\"; ma=2592000; v=\"46,44,43,39\""
},
{
"name": "cache-control",
"value": "public, max-age=31536000"
},
{
"name": "accept-ranges",
"value": "bytes"
},
{
"name": "timing-allow-origin",
"value": "*"
},
{
"name": "access-control-allow-origin",
"value": "*"
},
{
"name": "content-length",
"value": "15736"
},
{
"name": "x-xss-protection",
"value": "1; mode=block"
},
{
"name": "expires",
"value": "Tue, 24 Mar 2020 20:21:59 GMT"
}
],
"cookies": [],
"content": {
"size": 15736,
"mimeType": "font/woff2",
"text": "[redacted]",
"encoding": "base64"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 15840
},
"cache": {},
"timings": {
"blocked": 4.55399999966129,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.15599999999999992,
"wait": 39.65100000009211,
"receive": 9.406000000126369,
"_blocked_queueing": 3.0159999996612896
},
"serverIPAddress": "216.58.194.67",
"_initiator": {
"type": "script",
"stack": {
"callFrames": [
{
"functionName": "",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 20,
"columnNumber": 266
},
{
"functionName": "ready",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 10,
"columnNumber": 196
},
{
"functionName": "B",
"scriptId": "368",
"url": "chrome-extension://mbigbapnjcgaffohmbkdlecaccepngjd/lib/jquery-ui-1.8.6/js/jquery-1.4.2.js",
"lineNumber": 17,
"columnNumber": 6
}
]
}
},
"_priority": "VeryHigh",
"_resourceType": "font",
"pageref": "page_4"
}
]
}
}
tl;dr: Make sure your input name attributes are all unique. The submit will fail silently otherwise.
Posting this as an answer to help anyone else who runs into this. It turns out that some form errors, in this case an input with a duplicate name, will appear to submit successfully, but will actually either go to spam or be lost.
To confirm, I created a new form, identical to the first, but with all of the inputs named correctly. The form submitted fine and showed up in the dashboard immediately.
I then changed the last input to have a name already used by another input "email" in this case. The submission appeared to be successful, but the data never showed-up in the dashboard.
Changing the name back to a unique name and trying again submitted successfully and immediately showed up in the dashboard.
Here's what my mistake looked like.
<div class="registration-form">
<label for="email">E-mail Address:</label><input type="email" id="email" name="email" required minlength="4" maxlength="128">
</div>
...
<div class="registration-form">
<input type="number" id="number" name="email" required minlength="1" maxlength="4" size="4" class="number"> <label for="people">Number of people expected?</label>
</div>
I've had a similar issue with a Netlify form - showed as successful but then it wasn't actually submitted. Can you try to switch the data-netlify="true" to just netlify? That fixed the issue for me.

Working with zoho api's

I am working on ZOHO API's. Using POSTMAN I am trying to GET the details of a project. The API is as follows
GET /portal/[PORTALID]/projects/[PROJECTID]/
Sample Response
Status: 200 Success
Content Type: application/json;charset=utf-8
{
"projects": [{
"id": 170876000000765009,
"task_count": {
"open": 6,
"closed": 7
},
"milestone_count": {
"open": 2,
"closed": 1
},
"bug_count": {
"open": 2,
"closed": 1
},
"name": "Website Design Templates",
"status": "active",
"created_date": "10-22-2012 02:45 PM",
"created_date_long": 1350926134092,
"description": "This project is to discuss different design templates to build a website",
"owner_name": "Patricia Boyle",
"owner_id": "2060758",
"link": {
"self": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/"
},
"activity": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/activities/"
},
"status": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/statuses/"
},
"milestone": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/milestones/"
},
"tasklist": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/tasklists/"
},
"task": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/tasks/"
},
"bug": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/bugs/"
},
"timesheet": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/logs/"
},
"event": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/events/"
},
"document": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/documents/"
},
"folder": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/folders/"
},
"forum": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/forums/"
},
"user": {
"url": "https://projectsapi.zoho.com/restapi/portal/
2063927/projects/170876000000765009/users/"
}
}
}]
}
The link is here
But when I try to GET the details. It gives me 404 error. Below is my request.
https://bugtracker.zoho.com/portal/fasi/projects/7958751212/
Authentication Token: c1d5c4cfd0bfcfd8b10caf0b174hhh
Moreover, in the link, there is nothing given that how to send the request. All there is sample response.
How can I send a correct request to get the details?
Any help would be highly appreciated.

How to target domain root in a Firebase hosting header rule

I have a web app using custom domain. This domain has A record mapped to 151.101.1.195 and 151.101.65.195.
Everything works correctly, but when I have firebase.json like this:
{
"hosting": {
"public": "dist",
"headers": [{
"source": "**/*.html",
"headers": [{
"key": "Cache-Control",
"value": "private, max-age=0, no-cache"
}]
}]
}
}
I still see the response headers like this when I visit https://mycustomdomain.com:
accept-ranges:bytes
cache-control:max-age=3600
content-encoding:gzip
content-length:839
content-type:text/html; charset=utf-8
date:Wed, 27 Sep 2017 06:54:58 GMT
etag:"f0b36e6c2a348eb46d07907fea856e9a"
last-modified:Wed, 27 Sep 2017 06:53:07 GMT
server:nginx
status:200
strict-transport-security:max-age=31556926
vary:Accept-Encoding
via:1.1 varnish
x-cache:HIT
x-cache-hits:2
x-powered-by:Express
x-served-by:cache-bma7024-BMA
x-timer:S1506495298.256593,VS0,VE0
I expect the cache control header to be modified, but it doesn't change.
How can I change the response headers for domain root?
For anyone looking, I ended up doing it like this, and it seems to work:
{
"hosting": {
"public": "dist",
"headers": [
{
"source": "/",
"headers": [{
"key": "Cache-Control",
"value": "private, max-age=0, no-cache"
}]
},
{
"source": "**/*",
"headers": [{
"key": "Cache-Control",
"value": "private, max-age=0, no-cache"
}]
},
{
"source": "**/*.js",
"headers": [{
"key": "Cache-Control",
"value": "max-age=31536000"
}]
},
{
"source": "**/*.css",
"headers": [{
"key": "Cache-Control",
"value": "max-age=31536000"
}]
},
{
"source": "**/*.jpg",
"headers": [{
"key": "Cache-Control",
"value": "max-age=31536000"
}]
},
{
"source": "**/*.png",
"headers": [{
"key": "Cache-Control",
"value": "max-age=31536000"
}]
}
],
"rewrites": [
{ "source": "/api/1/mina", "function": "mydata" },
{ "source": "**", "destination": "/index.html" }
]
}
}
This also works with functions. Note that .js files are also agressively cached, as we use cache busting urls.