problem

Since Google Chrome was upgraded to chrome94 After version , The following error will appear when requesting the local interface under the non secure website : Access to XMLHttpRequest at 'http://127.0.0.1:10005/' from origin 'http://testing.hongyangcloud.com' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space local.

screening

When requested 127.0.0.1 The server of is added with a response header that allows cross domain access Access-Control-Allow-Origin:*, And on the intranet IP There is no problem to visit the website , That is not caused by the browser's homology policy . Checked the ,chrome94 Start disabling private network requests from non secure websites .

Chrome Major renewal , Will limit localhost visit

Chrome Planning to disable private network requests from non secure websites , The purpose is to protect users from Cross Site Request Forgery for routers and other devices on the private network (CSRF ) attack :

  • from Chrome 94 Start blocking private network requests from insecure public websites .
  • stay Chrome 101 Abandonment test completed in .
  • stay Chrome 92 Introduce some Chrome Strategy , Allow managed Chrome Deploy permanent bypass deprecation .

This is a chrome Update log of :https://developer.chrome.com/blog/private-network-access-update/

What is a non secure website ?

stay Chrome Browser , When accessing, you will be prompted that the connection is unsafe , When a user clicks on any form on a web page to enter information , The browser address bar is gray “ unsafe ” Immediately red highlights “ unsafe ”.

Personal understanding , There is no trusted deployment CA The signature is valid TLS Certificate website

What is a private network ?

In the address architecture of the Internet , Private network refers to compliance with RFC 1918(IPV4) and RFC 4193(IPV6) standard , Special for use IP Address space network . private IP Unable to connect directly to the Internet , Need to use network address translation ( Network Address Translator,NAT ) Or a proxy server ( proxy server ) To achieve .

commonly , The LAN we built in the enterprise 、 LAN in home network 、 Your local localhost , All belong to the private network .

Private network access specification

Private network access specification ( Formerly known as CORS-RFC1918) This limits the ability of a web site to send requests to servers on a private network . It is only allowed from the security context ( HTTPS ) Such requests for . The specification also extends cross domain resource sharing ( CORS ) agreement , Therefore, the website must be authorized by the server on the private network to send requests .

The private network request is the of its target server IP The address is greater than that of the originator of the request IP Requests for more private addresses . for example , From public websites ( https://example.com ) Go to a private website ( http://router.local ) Request , Or from a private website to localhost Request .

The following tests access in several environments :

We are in the process of development , These situations are actually quite common , Therefore, developers need to try and respond in advance .

visit localhost

If your website needs to ask localhost Request , Then you can refer to the following schemes :

Mask client settings

Chrome There is a configuration to disable this function , stay Chrome Address field input “chrome://flags/” After entering the page , Search for “Block insecure private network requests”, Set to Disabled, Again Relaunch Just fine :

Please note that :chrome The setting for shielding insecure private network requests is from 94 Version to 101 Version is valid ,Chrome 101 Discard the test that ends in ; It will still be disabled , At present, we will solve the problem in a new way .

Website upgrade HTTPS

Just upgrade your site to HTTPS . Mixing content does not prevent you from http://localhost ( or http://127...*、http://[::1] ) The request for the target , Even from a security context .

Please note that , There's a pit here , WebKit Engine and browser based on it ( such as Safari ) It doesn't follow W3C Mixed content specification , The above requests will be treated as mixed content and access is prohibited . They also do not implement private network access , Therefore, if the website uses the client of this kind of browser , Need to try HTTP agreement , This type of browser still allows you to send messages to localhost Request .

Access private IP

If your website needs to be private IP The target server at the address makes a request , Simply upgrade the sponsor's website to HTTPS It doesn't work . Mixed content prevents the security context from passing through plaintext HTTP Request , Therefore, newly secured websites will still find themselves unable to make requests . There are several ways to solve this problem :

Upgrade both ends to HTTPS

This plan is a little difficult , because HTTPS Only for public domain names , You need to give your private IP Register a public domain name , Then configure DNS Resolution points the public domain name to the private domain name IP, Finally, configure the domain name TLS certificate .

Reference material https://www.sohu.com/a/488979313_121124364

html { overflow-x: initial !important }
:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased }
body { margin: 0; padding: 0; height: auto; bottom: 0; top: 0; left: 0; right: 0; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; tab-size: 4 }
iframe { margin: auto }
a.url { word-break: break-all }
a:active, a:hover { outline: 0 }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color) }
#write { margin: 0 auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px }
#write.first-line-indent p { text-indent: 2em }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0 }
#write.first-line-indent li { margin-left: 2em }
.for-image #write { padding-left: 8px; padding-right: 8px }
body.typora-export { padding-left: 30px; padding-right: 30px }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap }
.typora-export .task-list-item input { pointer-events: none }
@media screen and (max-width: 500px) { body.typora-export { padding-left: 0; padding-right: 0 } #write { padding-left: 20px; padding-right: 20px } .CodeMirror-sizer { margin-left: 0 !important } .CodeMirror-gutters { display: none !important } }
#write li>figure:last-child { margin-bottom: 0.5rem }
#write ol, #write ul { position: relative }
img { max-width: 100%; vertical-align: middle; image-orientation: from-image }
button, input, select, textarea { color: inherit }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0 }
*, ::after, ::before { box-sizing: border-box }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative }
p { line-height: inherit }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4 }
p { orphans: 4 }
h1 { font-size: 2rem }
h2 { font-size: 1.8rem }
h3 { font-size: 1.6rem }
h4 { font-size: 1.4rem }
h5 { font-size: 1.2rem }
h6 { font-size: 1rem }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem }
.hidden { display: none }
.md-blockmeta { color: rgba(204, 204, 204, 1); font-weight: 700; font-style: italic }
a { cursor: pointer }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgba(85, 85, 85, 1); border-radius: 4px; cursor: pointer }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit }
figure { overflow-x: auto; margin: 1.2em 0; max-width: calc(100% + 16px); padding: 0 }
figure>table { margin: 0 }
tr { break-inside: avoid; break-after: auto }
thead { display: table-header-group }
table { border-collapse: collapse; border-spacing: 0; width: 100%; overflow: auto; break-inside: auto; text-align: left }
table.md-table td { min-width: 32px }
.CodeMirror-gutters { border-right: 0; background-color: inherit }
.CodeMirror-linenumber { user-select: none }
.CodeMirror { text-align: left }
.CodeMirror-placeholder { opacity: 0.3 }
.CodeMirror pre { padding: 0 4px }
.CodeMirror-lines { padding: 0 }
div.hr:focus { cursor: none }
#write pre { white-space: pre-wrap }
#write.fences-no-line-wrapping pre { white-space: pre }
#write pre.ty-contain-cm { white-space: normal }
.CodeMirror-gutters { margin-right: 4px }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; position: relative !important }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0; padding-bottom: 8px; overflow-x: auto }
#write .md-fences.mock-cm { white-space: pre-wrap }
.md-fences.md-fences-with-lineno { padding-left: 0 }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px }
.CodeMirror-line, twitterwidget { break-inside: avoid }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em }
.footnotes+.footnotes { margin-top: 0 }
.md-reset { margin: 0; padding: 0; border: 0; outline: 0; vertical-align: top; background: left top; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr }
li div { padding-top: 0 }
blockquote { margin: 1rem 0 }
li .mathjax-block, li p { margin: 0.5rem 0 }
li { margin: 0; position: relative }
blockquote>:last-child { margin-bottom: 0 }
blockquote>:first-child, li>:first-child { margin-top: 0 }
.footnotes-area { color: rgba(136, 136, 136, 1); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal }
#write .footnote-line { white-space: pre-wrap }
@media print { body, html { border: 1px solid rgba(0, 0, 0, 0); height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures } #write { margin-top: 0; padding-top: 0; border-color: rgba(0, 0, 0, 0) !important } .typora-export * { -webkit-print-color-adjust: exact } html.blink-to-pdf { font-size: 13px } .typora-export #write { break-after: avoid } .typora-export #write::after { height: 0 } .is-mac table { break-inside: avoid } }
.footnote-line { margin-top: 0.714em; font-size: 0.7em }
a img, img a { cursor: pointer }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgba(204, 204, 204, 1); display: block; overflow-x: hidden }
p>.md-image:only-child:not(.md-img-error) img, p>img:only-child { display: block; margin: auto }
#write.first-line-indent p>.md-image:only-child:not(.md-img-error) img { left: -2em; position: relative }
p>.md-image:only-child { display: inline-block; width: 100% }
#write .MathJax_Display { margin: 0.8em 0 0 }
.md-math-block { width: 100% }
.md-math-block:not(:empty)::after { display: none }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0; box-shadow: none }
.md-task-list-item { position: relative; list-style-type: none }
.task-list-item.md-task-list-item { padding-left: 0 }
.md-task-list-item>input { position: absolute; top: 0; left: 0; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none }
.math { font-size: 1rem }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px }
.md-toc-content { position: relative; margin-left: 0 }
.md-toc-content::after, .md-toc::after { display: none }
.md-toc-item { display: block; color: rgba(65, 131, 196, 1) }
.md-toc-item a { text-decoration: none }
.md-toc-inner:hover { text-decoration: underline }
.md-toc-inner { display: inline-block; cursor: pointer }
.md-toc-h1 .md-toc-inner { margin-left: 0; font-weight: 700 }
.md-toc-h2 .md-toc-inner { margin-left: 2em }
.md-toc-h3 .md-toc-inner { margin-left: 4em }
.md-toc-h4 .md-toc-inner { margin-left: 6em }
.md-toc-h5 .md-toc-inner { margin-left: 8em }
.md-toc-h6 .md-toc-inner { margin-left: 10em }
@media screen and (max-width: 48em) { .md-toc-h3 .md-toc-inner { margin-left: 3.5em } .md-toc-h4 .md-toc-inner { margin-left: 5em } .md-toc-h5 .md-toc-inner { margin-left: 6.5em } .md-toc-h6 .md-toc-inner { margin-left: 8em } }
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit }
.footnote-line a:not(.reversefootnote) { color: inherit }
.md-attr { display: none }
.md-fn-count::after { content: "." }
code, pre, samp, tt { font-family: var(--monospace) }
kbd { margin: 0 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgba(36, 39, 41, 1); background: rgba(255, 255, 255, 1); border: 1px solid rgba(173, 179, 185, 1); border-radius: 3px; box-shadow: 0 1px rgba(12, 13, 14, 0.2), inset 0 0 2px rgba(255, 255, 255, 1); white-space: nowrap; vertical-align: middle }
.md-comment { color: rgba(162, 127, 3, 1); opacity: 0.8; font-family: var(--monospace) }
code { text-align: left; vertical-align: initial }
a.md-print-anchor { white-space: pre !important; border-style: none !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0 !important; outline: 0 !important; background: left top !important; text-shadow: initial !important }
.md-inline-math .MathJax_SVG .noError { display: none !important }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0; position: relative; text-indent: 0; max-width: none; max-height: none; min-height: 0; min-width: 100%; width: auto; overflow-y: hidden; display: block !important }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; display: inline-block !important }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace) }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; padding: 0; margin: 0 }
.MathJax_SVG * { }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0 !important; margin-top: 0 !important }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif }
.md-diagram-panel>svg { max-width: 100% }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto }
[lang="mermaid"] .node text { font-size: 1rem }
table tr th { border-bottom: 0 }
video { max-width: 100%; display: block; margin: 0 auto }
iframe { max-width: 100%; width: 100%; border: none }
.highlight td, .highlight tr { border: 0 }
svg[id^="mermaidChart"] { line-height: 1em }
mark { background: rgba(255, 255, 0, 1); color: rgba(0, 0, 0, 1) }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit }
mark .md-meta { color: rgba(0, 0, 0, 1); opacity: 0.3 !important }
@media print { .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid } }
:root { --side-bar-bg-color: #fafafa; --control-text-color: #777 }
@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
html { font-size: 16px }
body { font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; color: rgba(51, 51, 51, 1); line-height: 1.6 }
#write { max-width: 860px; margin: 0 auto; padding: 30px 30px 100px }
@media only screen and (min-width: 1400px) { #write { max-width: 1024px } }
@media only screen and (min-width: 1800px) { #write { max-width: 1200px } }
#write>ul:first-child, #write>ol:first-child { margin-top: 30px }
a { color: rgba(65, 131, 196, 1) }
h1, h2, h3, h4, h5, h6 { position: relative; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.4; cursor: text }
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { text-decoration: none }
h1 tt, h1 code { font-size: inherit }
h2 tt, h2 code { font-size: inherit }
h3 tt, h3 code { font-size: inherit }
h4 tt, h4 code { font-size: inherit }
h5 tt, h5 code { font-size: inherit }
h6 tt, h6 code { font-size: inherit }
h1 { font-size: 2.25em; line-height: 1.2; border-bottom: 1px solid rgba(238, 238, 238, 1) }
h2 { font-size: 1.75em; line-height: 1.225; border-bottom: 1px solid rgba(238, 238, 238, 1) }
h3 { font-size: 1.5em; line-height: 1.43 }
h4 { font-size: 1.25em }
h5 { font-size: 1em }
h6 { font-size: 1em; color: rgba(119, 119, 119, 1) }
p, blockquote, ul, ol, dl, table { margin: 0.8em 0 }
li>ol, li>ul { margin: 0 }
hr { height: 2px; padding: 0; margin: 16px 0; background-color: rgba(231, 231, 231, 1); border: 0 none; overflow: hidden; box-sizing: content-box }
li p.first { display: inline-block }
ul, ol { padding-left: 30px }
ul:first-child, ol:first-child { margin-top: 0 }
ul:last-child, ol:last-child { margin-bottom: 0 }
blockquote { border-left: 4px solid rgba(223, 226, 229, 1); padding: 0 15px; color: rgba(119, 119, 119, 1) }
blockquote blockquote { padding-right: 0 }
table { padding: 0; word-break: initial }
table tr { border-top: 1px solid rgba(223, 226, 229, 1); margin: 0; padding: 0 }
table tr:nth-child(2n), thead { background-color: rgba(248, 248, 248, 1) }
table tr th { font-weight: bold; border-top: 1px solid rgba(223, 226, 229, 1); border-right: 1px solid rgba(223, 226, 229, 1); border-bottom: 0; border-left: 1px solid rgba(223, 226, 229, 1); margin: 0; padding: 6px 13px }
table tr td { border: 1px solid rgba(223, 226, 229, 1); margin: 0; padding: 6px 13px }
table tr th:first-child, table tr td:first-child { margin-top: 0 }
table tr th:last-child, table tr td:last-child { margin-bottom: 0 }
.CodeMirror-lines { padding-left: 4px }
.code-tooltip { box-shadow: 0 1px 1px rgba(0, 28, 36, 0.3); border-top: 1px solid rgba(238, 242, 242, 1) }
.md-fences, code, tt { border: 1px solid rgba(231, 234, 237, 1); background-color: rgba(248, 248, 248, 1); border-radius: 3px; padding: 2px 4px 0; font-size: 0.9em }
code { background-color: rgba(243, 244, 244, 1); padding: 0 2px }
.md-fences { margin-bottom: 15px; margin-top: 15px; padding-top: 8px; padding-bottom: 6px }
.md-task-list-item>input { margin-left: -1.3em }
@media print { html { font-size: 13px } table, pre { page-break-inside: avoid } pre { word-wrap: break-word } }
.md-fences { background-color: rgba(248, 248, 248, 1) }
#write pre.md-meta-block { padding: 1rem; font-size: 85%; line-height: 1.45; background-color: rgba(247, 247, 247, 1); border: 0; border-radius: 3px; color: rgba(119, 119, 119, 1); margin-top: 0 !important }
.mathjax-block>.code-tooltip { bottom: 0.375rem }
.md-mathjax-midline { background: rgba(250, 250, 250, 1) }
#write>h3.md-focus:before { left: -1.5625rem; top: 0.375rem }
#write>h4.md-focus:before { left: -1.5625rem; top: 0.285714286rem }
#write>h5.md-focus:before { left: -1.5625rem; top: 0.285714286rem }
#write>h6.md-focus:before { left: -1.5625rem; top: 0.285714286rem }
.md-image>.md-meta { border-radius: 3px; padding: 2px 0 0 4px; font-size: 0.9em; color: inherit }
.md-tag { color: rgba(167, 167, 167, 1); opacity: 1 }
.md-toc { margin-top: 20px; padding-bottom: 20px }
.sidebar-tabs { border-bottom: none }
#typora-quick-open { border: 1px solid rgba(221, 221, 221, 1); background-color: rgba(248, 248, 248, 1) }
#typora-quick-open-item { background-color: rgba(250, 250, 250, 1); border-top: 1px solid rgba(254, 254, 254, 1); border-right: 1px solid rgba(229, 229, 229, 1); border-bottom: 1px solid rgba(229, 229, 229, 1); border-left: 1px solid rgba(238, 238, 238, 1) }
.on-focus-mode blockquote { border-left-color: rgba(85, 85, 85, 0.12) }
header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", "Arial", sans-serif }
.file-node-content:hover .file-node-icon, .file-node-content:hover .file-node-open-state { visibility: visible }
.mac-seamless-mode #typora-sidebar { background-color: var(--side-bar-bg-color) }
.md-lang { color: rgba(180, 101, 77, 1) }
.html-for-mac .context-menu { --item-hover-bg-color: #E6F0FE }
#md-notification .btn { border: 0 }
.dropdown-menu .divider { border-color: rgba(229, 229, 229, 1) }
.ty-preferences .window-content { background-color: rgba(250, 250, 250, 1) }
.ty-preferences .nav-group-item.active { color: rgba(255, 255, 255, 1); background: rgba(153, 153, 153, 1) }

solve Chrome94 Then the non secure website requests localhost newspaper CORS More articles on the question

  1. solve React Native Use Fetch API Request network message Network request failed

    Source of problem : 1 . In the test fetch Data request ,Xcode9.0 The above cannot be requested https, Need to be in Xcode After loading the project in Info.plist Related configuration of , Refer to the following for details The problem and the solution are the same , No longer heavy ...

  2. WeChat H5 Page embedded Baidu map --- Solve the problem of mobile phone webKit location ,ios System to Africa https The website does not provide support issues

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=yGQt ...

  3. 【 To configure 】 Detected not applicable... In integrated managed pipeline mode ASP.NET Set up the solution ( Not simply set to 【 classic 】 Pattern ).

      ×   Detected not applicable... In integrated managed pipeline mode ASP.NET Set up the solution ( Not simply set to [ classic ] Pattern ). We will ASP.NET The program from IIS6 Migration to IIS7, The following error may be prompted during the operation : HTTP error 5 ...

  4. 【 turn 】 Detected not applicable... In integrated managed pipeline mode ASP.NET Set up the solution ( Not simply set to 【 classic 】 Pattern ).

    Detected not applicable... In integrated managed pipeline mode ASP.NET Set up the solution ( Not simply set to [ classic ] Pattern ). We will ASP.NET The program from IIS6 Migration to IIS7, The following error may be prompted during the operation : HTTP error 500.23 ...

  5. solve window2012 IIS8 The configured website cannot be downloaded exe Problems with documents

    window2012 IIS8 Configure website download exe file . solve window2012 IIS8 The configured website cannot be downloaded exe Problems with documents After configuring the website , Can't download exe file ,zip The file can be downloaded . Right click point ...

  6. solve mysql“Access denied for user &#39;root&#39;@&#39;localhost&#39;”

    solve mysql“Access denied for user 'root'@'localhost'” classification : linux 2011-01-14 00:23 147547 Human reading Comment on (3) Collection report ...

  7. Website eurl.axd Solutions to reporting errors

    Website eurl.axd Solutions to reporting errors The reason for the mistake is when ASP.NET detected Web The site is configured to use ASP.NET 4.0, Local ASP.NET 4.0 Will pass a component that cannot be extended URL To ASP.NET Tube of ...

  8. PHP All loopholes are solved ( 6、 ... and )- Cross Site Request Forgery

    In this paper, we mainly introduce the concept of PHP Cross Site Request Forgery of websites . stay CSRF All of the attack methods include the attacker forging one that appears to be initiated by other users HTTP request , in fact , Tracking messages sent by a user HTTP Request is the attacker's goal . CSRF(Cros ...

  9. [Android] solve 3gwap Networking failure : Networking requests switch between setting proxy and direct connection

    [Android] solve 3gwap Networking failure : Networking requests switch between setting proxy and direct connection Problem phenomenon : There's a problem ,UI The interaction is shown as : Unicom number is in 3gwap Under the network environment, resources have been unable to download successfully . see Log journal , Print out ...

  10. HTTP Use of the client request Method to request data from other websites

    stay node in , You can easily send requests to any website and read the response data of the website . var req=http.request(options,callback); options Is a string or an object . If it's a string ...

Random recommendation

  1. 【python】 use setup Install custom modules and packages

    python Interpreter lookup module When loading , The search directory is stored in sys.path In variables ,sys.path Variable contains the current directory of the file . If you want to use a script stored in another directory , Or scripts from other systems , You can ...

  2. LinuxShell Script introduction -- Chapter nine Management responsibility

    Collect process information $ ps PID TTY TIME CMD pts/ :: bash pts/ :: ps$ ps -f  #-f Show more details UID PID PPID C STIME TTY TI ...

  3. jquery Word limit

    $("#TextArea1").keydown(function(){ 10 var curLength=$("#TextArea1").val().lengt ...

  4. 【 Open source project 9】ImageLoaderConfiguration Detailed explanation

    ImageLoader Class contains all operations . He is a single example , To get a single instance of it , You need to call getInstance() Method . In the use of ImageLoader To show the picture , You need to initialize its configuration -Imag ...

  5. enumeration enum

    typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...

  6. An internal error occurred during: &quot;Building workspace&quot;. java.lang.StackOverflowError

    1 Error description 2 The reason for the error From the above description, we can ,MyEclipse Not enough memory available , Causes heap memory overflow 3 terms of settlement modify MyEclipse Memory settings #utf8 (do not remove) #utf8 (do ...

  7. SpringBoot Use ELK Log collection

    In this paper, SpringBoot Application coordination ELK Log collection . 1. of ELK 1.1 brief introduction I wrote an article about ELK Log collection scheme , Those who are interested can go and have a look , Click here -----> <ELK Log points ...

  8. One 、PTA Experiment assignment

    One .PTA Experiment assignment 1. subject 1: 6-2  Interval deletion of linear table elements 2. Design thinking Definition i,j; Judge L,minD,maxD; while(i<l->Last) { Judge all the numbers that meet the conditions ,de ...

  9. [MySQL TroubleShooting] Service startup error

    One of my friends sent me a message about the wrong startup stack, When to start Skip_Grant_Table No mistake : The big God in the group found out because udf_initv This custom function reports an error . But I can't figure out why to start a service and run a custom function ? ...

  10. About three levels (dao,serviece,servlet)

    In login verification , dao: The return is resultset object , Namely   ps.executeQuery( What needs to be strengthened is jdbc The specific process ) You can write the database connection by yourself Through the factory class You can connect to the database ...