获取Javascript Http请求的原始主机
当从Javascript客户端执行跨域获取Javascript Http请求的原始主机,javascript,ajax,http,Javascript,Ajax,Http,当从Javascript客户端执行跨域HTTP请求时,比如JQuery(从客户端浏览器)。在接收端,它能指出Javascript请求来自哪里吗 例如,我有一个站点,它加载了一个Javascript来调用web服务,比如foo.com/someapi 当API收到请求时,它将能够从发起主机获得什么。假设我的站点是bar.com,当我访问bar.com/index.html时,它将加载页面并向foo.com/someapi发出javascript HTTP请求 在客户端请求中,没有涉及纯Javasc
HTTP
请求时,比如JQuery(从客户端浏览器)。在接收端,它能指出Javascript请求来自哪里吗
例如,我有一个站点,它加载了一个Javascript来调用web服务,比如foo.com/someapi
当API收到请求时,它将能够从发起主机获得什么。假设我的站点是bar.com
,当我访问bar.com/index.html
时,它将加载页面并向foo.com/someapi
发出javascript HTTP请求
在客户端请求中,没有涉及纯Javascript的服务器端请求
此外,如果调用是从开发环境执行的,比如localhost,那么接收foo.com/someapi
的主机名将是什么
浏览器从Javascript执行HTTP请求时做什么:
- 在公共域站点中
- 和本地主机站点
bar.com
,则ORIGIN
标题将设置为bar.com
您可以在浏览器检查器的“网络”选项卡中查看此信息
编辑:如果您来自您的开发环境或本地主机,则应将主机文件(假设为linux/mac)和别名local.bar.com设置为127.0.0.1。然后,ORIGIN
标题将设置为local.bar.com
此标头不应被误认为是身份验证策略。为了尝试限制对授权用户的访问,您可以查看OAuth,网址为,BDRew提到了
源文件
头文件,它是跨源文件资源共享(CORS)规范的一部分。这是一个有用的指南,但不一定准确(或始终可用)
唯一(几乎)100%可靠的信息是请求来自的IP地址(或者,更确切地说是转发请求的最近代理服务器的IP地址)。这需要准确无误,否则响应将无法返回到发出请求的计算机。但是,它只显示客户端的位置,而不显示发出请求的页面的来源。(无论页面是从文件、本地主机还是外部站点加载的,此位置都将相同)
使用支持CORS的浏览器,应该做到以下几点:
文件://
url,则不会发送任何原始标头文件://
url,而是来自localhost
,则应设置原始标头。规范中没有规定不允许,但我还没有检查浏览器的实际功能这绝对不意味着实际控制资源的服务器应该依赖该头来实现任何类型的安全性。如果访问的数据非常重要,则应该对其进行适当的访问控制(https、密码和基于安全cookie的会话是一个很好的组合)您如何在服务器端(foo.com)处理HTTP请求?如果它来自一个开发环境,一个本地主机环境,那么我会向foo.com/someapi发出一个HTTP请求。源文件头是CORS的一部分,而不是HTTP规范。如果它支持CORS,并且源文件不是本地文件URL,但您不必依赖它,那么应该由浏览器设置。@iancleland,因此这很容易被伪造。不要如果未设置
ORIGIN
,浏览器不支持CORS,请求也不会被发送,因此您不必担心:)。在这种情况下,您将需要求助于其他技术,如JSONP或使用某种代理。好的,我明白了,无论如何,只是为了添加我尝试的原因要做到这一点,我正在考虑一个网站能够在web服务(外部/其他域)上发布帖子的基本方法,当我单击网站上的“提交”按钮时。而web服务可以识别请求来自何处。