我使用角5发送邮件请求,通过Bulksms:http://bulksms.com/发送短消息
在从Angular (客户端)提出请求时,我面临着以下问题:
访问控制-允许-原产地不允许使用http://TTTT:4200 .
如何在BulkSMS中纠正此问题?
致以敬意,
发布于 2018-06-26 10:33:05
浏览器的相同来源策略是以您希望的方式限制Javascript代码访问第三方(在本例中为api.bulksms.com ),而CORS (跨源资源共享)是一种放松这些限制的机制,也不足以允许这些请求(作为不受信任的第三方)。
维基百科-原产地相同政策:“在同一来源策略下,web浏览器允许包含在第一个网页中的脚本访问第二个网页中的数据,但前提是两个网页的来源相同。源定义为URI方案、主机名和端口号的组合。此策略防止一个页面上的恶意脚本访问另一个网页上的敏感数据”。维基百科页面包含了恶意Javascript代码使用的一些很好的例子,这些恶意Javascript代码是相同来源的策略试图限制的。
需要注意的是,这些限制仅由浏览器强制执行:没有在浏览器下运行的HTTP客户端代码通常不关心这些限制。
出于开发目的,有一些工具可以使您的生活更轻松--例如,您可以使用活服务器运行一个简单的HTTP服务器,该服务器为您的静态文件提供服务,同时还可以使用它的--proxy选项将请求路由到api.bulksms.com,并在此过程中解决您的相同来源的策略问题。
对于生产,一个典型的解决方案是通过您自己的服务器(向浏览器提供Javascript文件的服务器)或反向代理(它将在您自己的和第三方的服务前面)路由您的AJAX请求,这些请求将发送给第三方服务。如果您的应用程序有服务器端,您可以使用HTTP向api.bulksms.com发出HTTP请求,然后让您的Javascript代码与您自己的服务器进行对话,间接向bulksms.com发出请求。这也使您有机会在服务器端添加身份验证头,而无需知道Javascript代码(例如,如果您有一个bulksms.com帐户,并且许多用户可以通过您的角度应用程序使用该帐户,但谁不应该知道您的凭据)。类似地,您可以通过这种方式限制您的角度用户可以做什么(例如,限制他们每天发送的SMS数量)。
https://stackoverflow.com/questions/51038564
复制相似问题