我正在使用Angular 5发送帖子请求以通过Bulksms发送短信:http://bulksms.com/
当从Angular(客户端)发出请求时,我遇到了这个问题:
起源http://TTTT:4200被Access-Control-Allow-Origin所禁止。
如何在BulkSMS中更正此问题?
此致
答案 0 :(得分:0)
您的浏览器的同源策略正在限制您的Javascript代码以您希望的方式访问第三方(在这种情况下,即api.bulksms.com)以及CORS(跨域资源共享)放宽限制条件的机制,也放宽了不足以允许这些请求(来自您,作为不受信任的第三方)。
Wikipedia Same-origin policy:“在[same-origin]策略下,网络浏览器允许第一个网页中包含的脚本访问第二个网页中的数据,但前提是两个网页具有相同的来源。来源定义为URI方案,主机名和端口号的组合。此策略可防止一个页面上的恶意脚本获得对另一网页上敏感数据的访问权限。” Wikipedia页面包含一些很好的示例,这些示例说明了同源策略试图限制的各种恶意Javascript代码。
重要的是要注意,这些限制仅由浏览器强制执行:不在浏览器下运行的HTTP客户端代码通常并不关心这些。
出于开发目的,有一些工具可以使您的生活更轻松-例如,您可以使用live-server运行一个简单的HTTP服务器来提供您的静态文件,同时还可以使用其{{1} }选项可将请求路由到api.bulksms.com,并在此过程中解决同源策略问题。
对于生产而言,典型的解决方案是通过您自己的服务器(将Javascript文件提供给浏览器的AJAX请求)路由到第三方服务,或者通过反向代理路由您自己和第三方的服务)。如果您的应用程序有服务器端,则可以使用HTTP客户端从那里向api.bulksms.com发出HTTP请求,然后让您的Javascript代码与您自己的服务器通信,从而间接地将请求发送给bulmsms。 com。这也使您有机会在服务器端添加身份验证标头,而您的Javascript代码不必知道它们(例如,如果您拥有一个bulksms.com帐户,并且许多用户可以通过您的Angular应用程序使用该帐户,但是不应该知道您的凭据)。同样,您可以限制Angular用户以这种方式可以执行的操作(例如,限制他们每天可以发送的SMS数量)。