在JavaScript
中遇到臭名昭著的“ No 'Access-Control-Allow-Origin
'标题”错误,而邮递员的作品无缝却令人困惑。在本综合指南中,我们将深入研究这种差异背后的原因,通过代码示例提供见解和实用解决方案。
了解错误:
此错误通常是由于Same-Origin Policy
而发生的,这是一种安全功能,可防止网页向其他域提出请求。当您的JavaScript
code试图提出交叉原动请求(到另一个域)时,服务器必须包括适当的“ Access-Control-Allow-Origin
”标头才能授予许可。
为什么Postman工作:
与Web浏览器不同,Postman不会执行相同的原始策略。这是一个独立的工具,允许您测试API和绕过交叉限制。
解决方案:
1. Enable CORS on the Server:
在服务器端,将“ Access-Control-Allow-Origin
”标头添加到响应中。这允许特定的域访问您的资源。
node.js(express):
2. Proxy Server:
设置一个proxy server
以转发请求。这样,您的JavaScript
code请求从您自己的域中请求数据,避免跨原始问题。
3. JSONP (if supported):
JSONP可以通过注入<script>
标签来规避相同的Origin策略。
4. Use a CORS Extension (for Development):
在开发过程中,您可以使用放宽CORS
Restrictions的浏览器扩展名,但请记住不要在生产中使用它们。
5. Utilize Server-Side APIs:
通过您的服务器执行请求,充当客户端和远程服务器之间的中间人。
6. Reverse Proxy:
设置一个反向代理服务器,该服务器转发请求并附加必要的标题。
结论:
了解“ No 'Access-Control-Allow-Origin'
标头”错误,以及为什么它不影响诸如Postman之类的工具对于您的Web应用程序中成功的跨源性请求至关重要。通过使用CORS headers
,proxy servers
,JSONP
或server-side
APIs
,您可以减轻此错误并在不同域之间启用无缝通信。
LinkedIn Account
:LinkedIn
Twitter Account
:Twitter
信用:来自Acunetix的图形