mirror of
https://git.checksum.fail/alec/erythros
synced 2025-12-10 13:09:55 +02:00
Applications/Internet/Cyberia: Send referer in link navigation and form submit
This commit is contained in:
@@ -184,6 +184,7 @@ U0 @cyberia_link_left_clicked(Widget* widget)
|
||||
return;
|
||||
StrCpy(&addressbar1->text, resolved_href);
|
||||
Free(resolved_href);
|
||||
browser->renderer->navigation_type = HTML_NAVIGATION_HREF;
|
||||
Spawn(&@cyberia_navigate);
|
||||
}
|
||||
|
||||
@@ -318,6 +319,7 @@ U0 @cyberia_form_submit(@html_dom_node* form_node)
|
||||
}
|
||||
|
||||
Free(action);
|
||||
browser->renderer->navigation_type = HTML_NAVIGATION_FORM;
|
||||
Spawn(&@cyberia_navigate);
|
||||
}
|
||||
|
||||
@@ -613,8 +615,17 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
||||
}
|
||||
|
||||
U8* form_data_str = NULL;
|
||||
U8* referer = NULL;
|
||||
if (browser->renderer) {
|
||||
form_data_str = browser->renderer->form_data_str;
|
||||
switch (browser->renderer->navigation_type) {
|
||||
case HTML_NAVIGATION_HREF:
|
||||
case HTML_NAVIGATION_FORM:
|
||||
referer = browser->renderer->referer;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!refresh) {
|
||||
@@ -633,6 +644,7 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
||||
|
||||
U8 err_msg_buffer[128];
|
||||
U8 status_text_buffer[1024];
|
||||
U8* referer_text_buffer = CAlloc(1024, browser_task);
|
||||
|
||||
if (!renderer->current_url) {
|
||||
StrCpy(err_msg_buffer, "ERROR: Could not parse URL");
|
||||
@@ -656,12 +668,16 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
||||
if (!StrICmp(url->scheme, "https://") && url->port != 443)
|
||||
is_alternate_port = TRUE;
|
||||
StrCpy(status_text_buffer, "Fetching ");
|
||||
if (is_alternate_port)
|
||||
if (is_alternate_port) {
|
||||
String.Append(status_text_buffer, "%s%s:%d%s%s", url->scheme, url->host, url->port, url->path, url->query);
|
||||
else
|
||||
StrPrint(referer_text_buffer, "%s%s:%d%s%s", url->scheme, url->host, url->port, url->path, url->query);
|
||||
} else {
|
||||
String.Append(status_text_buffer, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
|
||||
StrPrint(referer_text_buffer, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
|
||||
}
|
||||
String.Append(status_text_buffer, "...");
|
||||
status1->SetText(status_text_buffer);
|
||||
renderer->referer = referer_text_buffer;
|
||||
|
||||
U8* buffer = browser->fetch_buffer;
|
||||
MemSet(buffer, 0, HTTP_FETCH_BUFFER_SIZE);
|
||||
@@ -672,6 +688,10 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
||||
JsonKey* cookie_keys = NULL;
|
||||
U8 cookie_buf[2048];
|
||||
|
||||
if (referer) {
|
||||
headers->set("Referer", referer, JSON_STRING);
|
||||
}
|
||||
|
||||
if (!StrCmp(&addressbar1->text, "about:newtab")) {
|
||||
resp = CAlloc(sizeof(@http_response));
|
||||
resp->body.data = NEW_TAB_HTML;
|
||||
@@ -821,6 +841,7 @@ U0 @cyberia_new_tab(Bool from_link_context_menu = FALSE)
|
||||
tabpanel1->index = i;
|
||||
++tabpanel1->count;
|
||||
|
||||
// FIXME: We need Referer if we right-click a link
|
||||
StrCpy(&addressbar1->text, new_tab_destination_url);
|
||||
Spawn(&@cyberia_navigate);
|
||||
win->focused_widget = addressbar1;
|
||||
|
||||
Reference in New Issue
Block a user