{"id":12193,"date":"2023-11-28T22:46:26","date_gmt":"2023-11-28T14:46:26","guid":{"rendered":"https:\/\/wx.kaifamiao.info\/?p=12193"},"modified":"2023-11-28T22:46:31","modified_gmt":"2023-11-28T14:46:31","slug":"qian-duan-mian-shi-ti-shen-me-shi-kua-yu-zen-me-ji","status":"publish","type":"post","link":"http:\/\/wx.kaifamiao.info\/index.php\/2023\/11\/28\/qian-duan-mian-shi-ti-shen-me-shi-kua-yu-zen-me-ji\/","title":{"rendered":"\u524d\u7aef\u9762\u8bd5\u9898\uff1a\u4ec0\u4e48\u662f\u8de8\u57df\uff1f\u600e\u4e48\u89e3\u51b3\u8de8\u57df\u95ee\u9898\uff1f"},"content":{"rendered":"<p>\u8de8\u57df\u95ee\u9898\u5b9e\u9645\u662f\u7531\u540c\u6e90\u7b56\u7565\u884d\u751f\u51fa\u7684\u4e00\u4e2a\u95ee\u9898\uff0c\u5f53\u4f20\u8f93\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u4efb\u4e00\u90e8\u5206\u4e0d\u4e00\u81f4\u65f6, \u4fbf\u4f1a\u4ea7\u751f\u8de8\u57df\u95ee\u9898\uff0c\u4ece\u800c\u62d2\u7edd\u8bf7\u6c42\uff0c\u4f46&lt;img src=XXX\uff1e \uff1clink href=XXXXscript src=XXX\uff1e\uff1b \u5929\u7136\u5141\u8bb8\u8de8\u57df\u52a0\u8f7d\u8d44\u6e90\u3002<br \/>\n\u89e3\u51b3\u65b9\u6848\u6709\uff1a<br \/>\nJSONP<br \/>\n1\u3001\t\u539f\u7406\uff1a\u5229\u7528\uff1cscript\uff1e\uff1b\u6807\u7b7e\u6ca1\u6709\u8de8\u57df\u9650\u5236\u7684\u6f0f\u6d1e\uff0c\u4f7f\u5f97\u7f51\u9875\u53ef\u4ee5\u5f97\u5230\u4ece\u5176\u4ed6\u6765\u6e90\u52a8\u6001\u4ea7\u751f \u7684JSON\u6570\u636e(\u524d\u63d0\u662f\u670d\u52a1\u5668\u652f\u6301)\u3002<br \/>\n2\u3001\t\u4f18\u70b9\uff1a\u5b9e\u73b0\u7b80\u5355\uff0c\u517c\u5bb9\u6027\u597d\u3002<br \/>\n3\u3001\t\u7f3a\u70b9\uff1a\u4ec5\u652f\u6301get\u65b9\u6cd5\uff0c\u5bb9\u6613\u53d7\u5230XSS\u653b\u51fb\u3002<br \/>\nC0RS<br \/>\n1\u3001\t\u539f\u7406\uff1a\u670d\u52a1\u5668\u7aef\u8bbe\u7f6eAccess-Control-Allow-Origin\u4ee5\u5f00\u542fCORS\u3002\u8be5\u5c5e\u6027\u8868\u793a\u54ea\u4e9b\u57df\u540d \u53ef\u4ee5\u8bbf\u95ee\u8d44\u6e90\uff0c\u5982\u8bbe\u7f6e\u901a\u914d\u7b26\u5219\u8868\u793a\u6240\u6709\u7f51\u7ad9\u5747\u53ef\u8bbf\u95ee\u3002<br \/>\n2\u3001\t\u5b9e\u73b0\u5b9e\u4f8b(express):<br \/>\n\/\/app. js\u4e2d\u8bbe\u7f6e<br \/>\nvar app = express ()\uff1b<br \/>\n\/\/CORS \u8de8\u57df<br \/>\n\/\/ CORS\uff1a\u8bbe\u7f6e\u5141\u8bb8\u8de8\u57df\u4e2d\u95f4\u4ef6<br \/>\nvar allowCrossDomain = function(req, res, next) {<br \/>\n\/\/\u8bbe\u7f6e\u5141\u8bb8\u8de8\u57df\u8bbf\u95ee\u7684URL(<em>\u8868\u793a\u5141\u8bb8\u4efb\u610fURL\u8bbf\u95ee)<br \/>\nres. header(&quot;Access-Control-Allow-Origin&quot;, &quot;<\/em>&quot;);<br \/>\n\/\/\u8bbe\u7f6e\u5141\u8bb8\u8de8\u57df\u8bbf\u95ee\u7684\u8bf7\u6c42\u5934<br \/>\nres. header (&quot;Access-Control-Al1ow-Headers&quot;,<br \/>\n&quot;X-Requested-With,Origin,Content-Type.Accept,Authorization&quot;)\uff1b<br \/>\n\/\/\u8bbe\u7f6e\u5141\u8bb8\u8de8\u57df\u8bbf\u95ee\u7684\u8bf7\u6c42\u7c7b\u578b<br \/>\nres. header(&quot;Access-Contro1-Al1ow-Methods&quot;, &quot;PUT, POST,GET, DELETE,OPTIONS&quot;)\uff1b<br \/>\n\/\/\u8bbe\u7f6e\u5141\u8bb8\u670d\u52a1\u5668\u63a5\u6536cookie<br \/>\nres. header(&#8216;Access-Control-Allow-Credentials&#8217;, &#8216;true&#8217;)\uff1b<br \/>\nnext ()\uff1b<br \/>\n};<br \/>\napp. use(allowCrossDomain)\uff1b<br \/>\n\/\/<br \/>\nNode\u4e2d\u95f4\u4ef6\u4ee3\u7406<br \/>\n\u539f\u7406\uff1a\u540c\u6e90\u7b56\u7565\u4ec5\u662f\u6d4f\u89c8\u5668\u9700\u8981\u9075\u5faa\u7684\u7b56\u7565\uff0c\u6545\u642d\u5efa\u4e2d\u95f4\u4ef6\u670d\u52a1\u5668\u8f6c\u53d1\u8bf7\u6c42\u4e0e\u54cd\u5e94\uff0c\u8fbe\u5230\u8de8\u57df \u76ee\u7684\u3002<br \/>\n\/* serverl. js \u4ee3\u7406\u670d\u52a1\u5668(http\uff1a\/\/localhost\uff1a 3000) *\/<br \/>\nconst http = require(&#8216;http&#8217;)<br \/>\n\/\/\u7b2c\u4e00\u6b65\uff1a\u63a5\u53d7\u5ba2\u6237\u7aef\u8bf7\u6c42<br \/>\nconst server = http. createServer((request, response) = &gt; {<br \/>\n\/\/\u4ee3\u7406\u670d\u52a1\u5668\uff0c\u76f4\u63a5\u548c\u6d4f\u89c8\u5668\u76f4\u63a5\u4ea4\u4e92\uff0c\u9700\u8981\u8bbe\u7f6eCORS\u7684\u9996\u90e8\u5b57\u6bb5<br \/>\nresponse. writeHead(200, {<br \/>\n&#8216;Access-Control-Allow-Origin&#8217;:,<br \/>\n&#8216;Access-Control-Allow-Methods&#8217;: &#8216;,<br \/>\n&#8216;Access-Control-Al1ow-Headers&#8217;: &#8216;Content-Type &#8216;<br \/>\n})<br \/>\n\/\/\u7b2c\u4e8c\u6b65\uff1a\u5c06\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u670d\u52a1\u5668<br \/>\nconst proxyRequest = http. request({<br \/>\nhost\uff1a &#8216;127. 0. 0. 1&#8217;,<br \/>\nport: 4000,<br \/>\nurl\uff1a &#8216;\/&#8217;,<br \/>\nmethod\uff1a request. method,<br \/>\nheaders\uff1a request. headers<br \/>\n}, serverResponse = &gt; {<br \/>\n\/\/\u7b2c\u4e09\u6b65\uff1a\u6536\u5230\u670d\u52a1\u5668\u7684\u54cd\u5e94<br \/>\nvar body = &#8221;<br \/>\nserverResponse. on(&#8216;data&#8217;, chunk = &gt; {<br \/>\nbody += chunk<br \/>\n})<br \/>\nserverResponse. on(&#8216;end&#8217;, () = &gt; {<br \/>\nconsole. log(&#8216;The data is &#8216; + body)<br \/>\n\/\/\u7b2c\u56db\u6b65\uff1a\u5c06\u54cd\u5e94\u7ed3\u679c\u8f6c\u53d1\u7ed9\u6d4f\u89c8\u5668<br \/>\nresponse. end(body)<br \/>\n})<br \/>\n}).end 0<br \/>\n})<br \/>\nserver.listen(3000, () = &gt; {<br \/>\nconsole. log( &#8216;\u4e2d\u95f4\u4ef6\u670d\u52a1\u5668\u5730\u5740\uff1ahttp\uff1a\/\/localhost\uff1a3000&#8217;)<br \/>\n})<br \/>\n\/\/ server2. js(http\uff1a\/\/localhost\uff1a4000)<br \/>\nconst http = require(&quot;http&quot;)\uff1b<br \/>\nconst data = {<br \/>\ntitle\uff1a &quot;fontend&quot;,<br \/>\npassword\uff1a &quot;123456&quot;<br \/>\n};<br \/>\nconst server = http. createServer((request, response) = &gt; {<br \/>\nif (request. url = &quot;\/&quot;) {<br \/>\nresponse. end(JSON. stringify(data))\uff1b<br \/>\n}<br \/>\n});<br \/>\nserver. listen(4000, () = &gt; {<br \/>\nconsole. log(&quot;The server is running at http\uff1a\/\/localhost\uff1a4000&quot;)\uff1b<br \/>\n});<br \/>\nnginx\u53cd\u5411\u4ee3\u7406<br \/>\n1\u3001\t\u539f\u7406\uff1a\u7c7b\u4f3cNode\u4e2d\u95f4\u4ef6\u670d\u52a1\u5668\uff0c\u901a\u8fc7nginx\u4ee3\u7406\u670d\u52a1\u5668\u5b9e\u73b0\u3002<br \/>\n2\u3001\t\u5b9e\u73b0\u65b9\u6cd5\uff1a\u4e0b\u8f7d\u5b89\u88c5nginx,\u4fee\u6539\u914d\u7f6e\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8de8\u57df\u95ee\u9898\u5b9e\u9645\u662f\u7531\u540c\u6e90\u7b56\u7565\u884d\u751f\u51fa\u7684\u4e00\u4e2a\u95ee\u9898\uff0c\u5f53\u4f20\u8f93\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u4efb\u4e00\u90e8\u5206\u4e0d\u4e00\u81f4\u65f6, \u4fbf\u4f1a\u4ea7\u751f\u8de8\u57df\u95ee\u9898\uff0c\u4ece\u800c\u62d2\u7edd [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[103],"tags":[],"class_list":["post-12193","post","type-post","status-publish","format-standard","hentry","category-qianduan"],"_links":{"self":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/12193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/comments?post=12193"}],"version-history":[{"count":1,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/12193\/revisions"}],"predecessor-version":[{"id":12194,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/12193\/revisions\/12194"}],"wp:attachment":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/media?parent=12193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/categories?post=12193"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/tags?post=12193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}