Skip to content

Expand RequestContext.isAjax() to recognize Fetch Metadata requests#662

Merged
lmajano merged 1 commit into
developmentfrom
copilot/update-isajax-method
Jun 5, 2026
Merged

Expand RequestContext.isAjax() to recognize Fetch Metadata requests#662
lmajano merged 1 commit into
developmentfrom
copilot/update-isajax-method

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Jun 5, 2026

event.isAjax() only recognized X-Requested-With: XMLHttpRequest, so modern fetch() calls were misclassified as non-AJAX. This caused downstream behavior (e.g., debugger rendering) to run on requests that should be treated as async/AJAX.

  • Request classification update

    • Kept legacy XHR detection.
    • Added Fetch Metadata detection using request headers:
      • Sec-Fetch-Dest == "empty"
      • Sec-Fetch-Mode != "navigate"
    • This classifies typical fetch() API calls as AJAX while excluding browser navigation requests.
  • Behavioral coverage added

    • Added focused specs for:
      • XHR header path (XMLHttpRequest) → true
      • Fetch Metadata path (cors + empty) → true
      • Navigation request path (navigate + document) → false
boolean function isAjax(){
	var xRequestedWith = getHTTPHeader( "X-Requested-With", "" );
	var fetchMode      = getHTTPHeader( "Sec-Fetch-Mode", "" );
	var fetchDest      = getHTTPHeader( "Sec-Fetch-Dest", "" );

	return (
		xRequestedWith eq "XMLHttpRequest" ||
		( len( fetchMode ) && fetchMode neq "navigate" && fetchDest eq "empty" )
	);
}

@lmajano lmajano marked this pull request as ready for review June 5, 2026 11:13
@lmajano lmajano merged commit 0cd72a7 into development Jun 5, 2026
14 of 18 checks passed
@lmajano lmajano deleted the copilot/update-isajax-method branch June 5, 2026 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants