Hey, I just wanted to clarify a couple of use cases:

- I assume direct navigation to a local network is fine and remains without 
permission? (like navigating to your router's settings page)
- By "secure context", you mean that the page which wants to access local 
network has to be secure. Is that right?
- What's the behavior of local file (file://) accessing local network?

Thanks,
Vlad

On Wednesday, September 3, 2025 at 10:23:02 AM UTC-4 Alex Russell wrote:

> Sorry, failed to spot the long discussion in Considered Alternatives in 
> the Explainer. Thanks for putting it all down there.
>
> LGTM1
>
> On Wednesday, September 3, 2025 at 3:20:54 PM UTC+1 Alex Russell wrote:
>
>> Is there a document that summarises why Private Network Access was 
>> abandoned? And was there any discussion of explicit API for this?
>>
>> Best,
>>
>> Alex
>>
>> On Wednesday, September 3, 2025 at 12:32:02 AM UTC+1 Chris Thompson wrote:
>>
>>> Contact emails
>>>
>>> cth...@chromium.org
>>>
>>> Explainer
>>>
>>> https://github.com/WICG/local-network-access/blob/main/explainer.md
>>>
>>> Specification
>>>
>>> https://wicg.github.io/local-network-access
>>>
>>> Summary
>>>
>>> Chrome 141 restricts the ability for sites to make requests to the 
>>> user's local network, gated behind a permission prompt.
>>>
>>> A local network request is any request from a public website to a local 
>>> IP address or loopback, or from a local website (e.g. intranet) to 
>>> loopback. Gating the ability for websites to perform these requests behind 
>>> a permission mitigates the risk of cross-site request forgery attacks 
>>> against local network devices such as routers, and reduces the ability of 
>>> sites to use these requests to fingerprint the user's local network.
>>>
>>> This permission is restricted to secure contexts. If granted, the 
>>> permissions additionally relaxes mixed content blocking for local network 
>>> requests (since many local devices are not able to obtain publicly trusted 
>>> TLS certificates). Requests from insecure contexts will be silently 
>>> rejected. Sites may temporarily opt-out of the secure contexts restriction 
>>> using the reverse origin trial “Local Network Access from Non-Secure 
>>> Contexts 
>>> <https://developer.chrome.com/origintrials/#/view_trial/3826370833404657665>”,
>>>  
>>> included in this launch.
>>>
>>> This initial version of Local Network Access (LNA) applies to 
>>> subresource requests, fetch() requests, and navigating subframes. In the 
>>> near future we plan to send a separate Intent-to-Ship for applying LNA to 
>>> WebSockets, WebTransport, and WebRTC connections.
>>>
>>> This work supersedes a prior effort called "Private Network Access" 
>>> (e.g., https://chromestatus.com/feature/5737414355058688, 
>>> https://chromestatus.com/feature/5954091755241472) which used preflight 
>>> requests to allow local devices to opt-in to receiving requests.
>>>
>>> Enterprises that need to disable or auto-grant the permission can do so 
>>> using the LocalNetworkAccessAllowedForUrls 
>>> <https://chromeenterprise.google/policies/#LocalNetworkAccessAllowedForUrls>
>>>  
>>> and LocalNetworkAccessBlockedForUrls 
>>> <https://chromeenterprise.google/policies/#LocalNetworkAccessBlockedForUrls>
>>>  
>>> policies. The value of '*' can be used to allow local network access on all 
>>> URLs, matching the behavior prior to rolling out the restrictions. At 
>>> launch, the policies can be set using custom configurations 
>>> <https://support.google.com/chrome/a/answer/14749672>.
>>>
>>>
>>> Blink component
>>>
>>> Blink>SecurityFeature>LocalNetworkAccess 
>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESecurityFeature%3ELocalNetworkAccess%22>
>>>
>>> TAG review
>>>
>>> https://github.com/w3ctag/design-reviews/issues/1116
>>>
>>> TAG review status
>>>
>>> Issues addressed (satisfied with concerns)
>>>
>>> Origin Trial Name
>>>
>>> Local Network Access from Non-Secure Contexts 
>>> <https://developer.chrome.com/origintrials/#/view_trial/3826370833404657665>
>>>
>>> Chromium Trial Name
>>>
>>> LocalNetworkAccessNonSecureContextAllowed
>>>
>>> Origin Trial documentation link
>>>
>>> https://developer.chrome.com/blog/local-network-access 
>>>
>>> Risks
>>>
>>> Interoperability and Compatibility
>>>
>>> Interoperability risks:
>>>
>>> LNA requires a Secure Context to make local network requests, but 
>>> exempts some of these local network requests from mixed content checks (if 
>>> the user grants permission). If another browser does not implement LNA, 
>>> these same local network requests might be blocked as mixed content, or the 
>>> site might need to serve over HTTPS for Chrome and over HTTP for browsers 
>>> that don't implement LNA (to avoid triggering mixed content).
>>>
>>> Compatibility risks:
>>>
>>> There are some local network requests types that we cannot know ahead of 
>>> time will be going to the local network (e.g., a subresource request to 
>>> http://test.example which then resolves to 192.168.0.1). These would be 
>>> blocked as mixed content, as mixed content checks happen before hostname 
>>> resolution (i.e., they occur before "Obtain a connection" in Fetch). 
>>> Explicit local IP addresses, .local domains, and fetch() requests with 
>>> the new `targetAddressSpace` fetch() option are exempted from mixed content 
>>> checks, but other connection types may be difficult for developers to work 
>>> around mixed content blocking (e.g., WebSockets 
>>> wicg/local-network-access#16 
>>> <https://github.com/wicg/local-network-access/issues/16>).
>>>
>>> Alongside shipping these restrictions we are running a reverse origin 
>>> trial to allow sites to (temporarily) opt-out of the secure contexts 
>>> requirement -- this would be an escape hatch for mixed content. This origin 
>>> trial can only be enabled through origin tokens delivered via HTTP header 
>>> due the trial affecting the security policy of the document being loaded.
>>>
>>> We have previously run a Dev Trial and a 50% Finch experiment on 
>>> Canary/Dev/Beta which helped alert potentially affected developers and find 
>>> some bugs early before shipping. Based in part on questions from affected 
>>> developers we have put together an “LNA Adoption Guide 
>>> <https://docs.google.com/document/d/1QQkqehw8umtAgz5z0um7THx-aoU251p705FbIQjDuGs/edit?usp=sharing>”
>>>  
>>> to help affected sites adapt to these new restrictions.
>>>
>>> Based on our UseCounter 
>>> PrivateNetworkAccessInsecureResourceNotKnownPrivate 
>>> <https://chromestatus.com/metrics/feature/timeline/popularity/5319>, we 
>>> currently estimate an upper bound of 0.004% of page loads may make local 
>>> network requests which would currently run afoul of mixed content blocking 
>>> despite the exceptions we have added.
>>>
>>>
>>> Gecko: Under consideration (
>>> https://groups.google.com/a/mozilla.org/g/dev-platform/c/B8oN3ARp_j0/m/rWKXmnj4AAAJ)
>>>  
>>> Firefox is prototyping based on our spec draft. Request for signals: 
>>> https://github.com/mozilla/standards-positions/issues/1260
>>>
>>> WebKit: No signal. Request for signals: 
>>> https://github.com/WebKit/standards-positions/issues/520
>>>
>>> Web developers: Mixed signals (
>>> https://github.com/explainers-by-googlers/local-network-access/issues). 
>>> Feedback from developers has been mixed, both due the new burden of a 
>>> permission prompt (compared to PNA) and from some of the difficulty of 
>>> navigating mixed content (the same as PNA). Many developers understand the 
>>> reasoning behind adding the new permission though, and are productively 
>>> engaging on how they can avoid issues.
>>>
>>> Other signals: Brave ships a "localhost access" permission (see 
>>> https://brave.com/privacy-updates/27-localhost-permission/)
>>>
>>> Ergonomics
>>>
>>> N/A
>>>
>>>
>>> Activation
>>>
>>> A new permission will be shown to users, which may be unexpected. If 
>>> users deny the permission, functionality may break (potentially requiring 
>>> additional support from site owners). Part of our goal for having a Dev 
>>> Trial was to give site owners time to adjust their requests (especially if 
>>> they need to use the mixed content exemptions) and to potentially adapt 
>>> their UX flows so the permission requests are less surprising to users. We 
>>> have collected some advice for how sites can adapt to these new 
>>> restrictions in our “LNA Adoption Guide 
>>> <https://docs.google.com/document/d/1QQkqehw8umtAgz5z0um7THx-aoU251p705FbIQjDuGs/edit?usp=sharing>
>>> ”.
>>>
>>>
>>> Security
>>>
>>> Exempting some requests from mixed content checks based on declared 
>>> targetAddressSpace could potentially be used to arbitrarily bypass mixed 
>>> content. To avoid this, Chrome verifies that the actual resolved address 
>>> space matches what was declared, and blocks the request if it does not.
>>>
>>>
>>> WebView application risks
>>>
>>> These restrictions do not apply to WebView (see below).
>>>
>>>
>>> Debuggability
>>>
>>> When a request would be blocked under LNA, we add a new DevTools Issue 
>>> with details.
>>>
>>>
>>> Will this feature be supported on all six Blink platforms (Windows, Mac, 
>>> Linux, ChromeOS, Android, and Android WebView)?
>>>
>>> No
>>>
>>> Android WebView currently doesn't support letting apps grant any new 
>>> permission types, so the Local Network Access permission is currently 
>>> unconditionally granted in WebView. In parallel to this effort, Android is 
>>> adding a Local Network permission which would apply to the app that embeds 
>>> the WebView 
>>> https://developer.android.com/privacy-and-security/local-network-permission
>>>
>>>
>>> Is this feature fully tested by web-platform-tests 
>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>> ?
>>>
>>> No
>>>
>>> We have coverage of core aspects of the feature in WPTs and are actively 
>>> working on building out the test suite  
>>> https://wpt.fyi/results/fetch/local-network-access 
>>> <https://wpt.fyi/results/fetch/local-network-access>. We have 
>>> additional testing coverage in Chromium browser tests, particularly for 
>>> areas that are difficult to write WPTs for.
>>>
>>>
>>> DevTrial instructions
>>>
>>> https://developer.chrome.com/blog/local-network-access
>>>
>>> Flag name on about://flags
>>>
>>> local-network-access-check
>>>
>>> Finch feature name
>>>
>>> LocalNetworkAccessChecks
>>>
>>> Rollout plan
>>>
>>> Will ship enabled for all users
>>>
>>> Requires code in //chrome?
>>>
>>> True
>>>
>>> Tracking bug
>>>
>>> https://crbug.com/394009026
>>>
>>> Launch bug
>>>
>>> https://launch.corp.google.com/launch/4395658
>>>
>>> Sample links
>>>
>>> https://lna-testing.notyetsecure.com
>>>
>>> Estimated milestones
>>>
>>> Shipping on desktop
>>>
>>> 141
>>>
>>> Origin trial desktop first
>>>
>>> 141
>>>
>>> Origin trial desktop last
>>>
>>> 146
>>>
>>> DevTrial on desktop
>>>
>>> 138
>>>
>>> Shipping on Android
>>>
>>> 141
>>>
>>> Origin trial Android first
>>>
>>> 141
>>>
>>> Origin trial Android last
>>>
>>> 146
>>>
>>> DevTrial on Android
>>>
>>> 139
>>>
>>>
>>> Anticipated spec changes
>>>
>>> Open questions about a feature may be a source of future web compat or 
>>> interop issues. Please list open issues (e.g. links to known github issues 
>>> in the project for the feature specification) whose resolution may 
>>> introduce web compat/interop risk (e.g., changing to naming or structure of 
>>> the API in a non-backward-compatible way).
>>>
>>> None
>>>
>>> Link to entry on the Chrome Platform Status
>>>
>>> https://chromestatus.com/feature/5152728072060928?gate=5199213979500544
>>>
>>> Links to previous Intent discussions
>>>
>>> Intent to Prototype: 
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALMy46SB%2Bv9dnp-wrJ4WH0R4UJmWuutq1st92%3D_zOyhnLJ_vkw%40mail.gmail.com
>>>
>>> Intent to Experiment: 
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHEiSH03XUPgcAkVmE25PpvDXMsx%3D16Kgeid_KJ8vRgyvueNuA%40mail.gmail.com
>>>
>>> Ready for Developer Testing: 
>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/D4nqAa3FUN8/m/WFVmJYh0BAAJ
>>>  
>>>
>>> This intent message was generated by Chrome Platform Status 
>>> <https://chromestatus.com/>.
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8863a050-972e-4d00-9960-b4dc6436b013n%40chromium.org.

Reply via email to