linux http请求不成功是为啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux http请求不成功是为啥相关的知识,希望对你有一定的参考价值。
参考技术A 之前用GET方式一直不行,接口那边调出log看说是空指针,说我们有参数没传过来。我想可能和我传了多个参数有关。于是我改用POST方式也就是curl -d就可以了。
为啥CORS从浏览器发送而不是从终端发送时会阻止我的Http请求
【中文标题】为啥CORS从浏览器发送而不是从终端发送时会阻止我的Http请求【英文标题】:Why does CORS block my Http request when sent from the browser but not from the terminal为什么CORS从浏览器发送而不是从终端发送时会阻止我的Http请求 【发布时间】:2021-07-23 14:32:08 【问题描述】:我对 CORS 提供的安全性有点困惑。下面是两个几乎相同的 HTTP 请求,一个有效,一个无效,一个是通过 curl 另一个是浏览器中的 javascript。
终端
$ curl https://www.google.com/
--> Returns a page
浏览器:
// Open the console in the browser (or spin put localhost)
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.google.com");
xhr.send();
--> CORS Error
再试一次:
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.google.com");
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader("Access-Control-Allow-Methods", 'GET,PUT,POST,DELETE,PATCH,OPTIONS');
xhr.setRequestHeader("Access-Control-Allow-Headers", 'Origin,Authorization,Content-Type,X-Auth-Token');
xhr.setRequestHeader("Access-Control-Allow-Credentials", 'true')
xhr.send();
--> CORS Error still
所以我猜测 google.com 服务器已将其设置为仅接受来自 google 域的请求。但是,当我从不属于谷歌域的终端卷曲时,我会收到带有 HTML 等的 200 响应。
那么为什么服务器会响应我没有域的终端,而当我在浏览器中使用javascript时没有响应?
谢谢^.^
【问题讨论】:
How much research effort is expected of Stack Overflow users? “在 Stack Overflow 上提问应该是你寻找答案过程中的最后一步” 使用我的搜索引擎快速搜索“CORS”给出了我在第一个结果的第一段中给出答案。 【参考方案1】:CORS 是浏览器提供的一项功能。 CORS 是一种机制,旨在允许代表您发出请求,同时阻止流氓 JS 发出的某些请求,并且在您向以下位置发出 HTTP 请求时触发:
-
不同的域(例如,example.com 上的站点调用 api.com)
不同的子域(例如,example.com 上的站点调用 api.example.com)
不同的端口(例如,example.com 上的站点调用 example.com:3001)
不同的协议(例如,https://example.com 的站点调用 http://example.com)
请查看附件-https://medium.com/@baphemot/understanding-cors-18ad6b478e2b
【讨论】:
【参考方案2】:CORS 是最终由您的浏览器实现的安全功能。这就是为什么您在从终端卷曲时永远不会看到 CORS 错误的原因。另见:this post from mozilla
上面写着:
跨域资源共享 (CORS (en-US)) 是一种机制,它使用额外的 HTTP 标头告诉浏览器让在一个源(域)上运行的 Web 应用程序有权访问来自服务器的选定资源不同的起源。
【讨论】:
以上是关于linux http请求不成功是为啥的主要内容,如果未能解决你的问题,请参考以下文章
为啥 HTTP 请求在 UTL_hhtp oracle 包上反复失败?