当我尝试$. aps从我的网站中的其他网站获取一些内容时,我得到了错误。
无法加载https://www.pinterest.com/:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源'http://localhost:8100'。
我知道如果目标网站不允许localhost:8100获取数据,我就不能在网络上的客户端获取数据。
然而,我发现移动的应用程序(不是移动的浏览器,而是android/ios应用程序)没有这个问题,他们可以简单地通过默认的移动的内置HTTP获取功能获取网站内容。
我想问为什么移动的不会遇到CORS问题(移动的可以简单地通过内置的http获取功能获取网页内容)?
谢谢.
2条答案
按热度按时间hrirmatl1#
CORS由浏览器强制执行,以满足它们必须满足的安全标准。它不影响任何语言的编程请求,比如bash上的
curl
调用。这是CORS的工作原理,基于维基百科:
1.浏览器发送带有Origin HTTP头的OPTIONS请求。此标头的值是服务于父页的域。当来自http://www.example.com的页面试图访问www.example.com中的用户数据时,以下请求报头将被发送到service.example.com:service.example.com
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Origin: *
CORS的工作方式意味着它是可选的。浏览器强制执行它,以防止JavaScript AJAX调用执行恶意调用。但是手工构建的其他类型的消费者不需要强制执行CORS。
在这个例子中:
.有效地执行对您的网站的请求并做坏事。
这就是为什么CORS只在浏览器的上下文中有意义。* * 您发送到浏览器的Javascript无法(至少很容易)绕过CORS,因为浏览器的the only API that allows you to perform requests是用石头写的**。此外,在浏览器之外没有本地存储或cookie。
0h4hbjxa2#
在设备上运行时,您的文件通过
file://
协议提供,而不是http://
,因此您的origin
将不存在。这就是为什么来自本地设备的请求不会触发CORS。