前端has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
时间: 2023-10-19 10:35:36 浏览: 102
这个问题是由跨域资源共享 (CORS) 导致的。当浏览器发出跨域请求时,服务器需要在响应头中添加 "Access-Control-Allow-Origin" 头部来允许特定的源访问资源。如果服务器未正确配置这个头部,浏览器会阻止前端代码访问该资源,并抛出 "No 'Access-Control-Allow-Origin' header is present on the requested resource" 错误。
要解决这个问题,您可以采取以下几种方法之一:
1. 在服务器端进行配置:在服务器响应头中添加 "Access-Control-Allow-Origin" 头部,并设置为允许访问资源的域名。例如,可以设置为 "*" 来允许所有域名访问资源,或设置为指定的域名,如 "https://www.example.com"。
2. 使用代理服务器:通过设置代理服务器来转发请求,从而避免跨域问题。您可以在您的服务器上配置一个代理,将前端请求发送到目标服务器,并将响应返回给前端。这样,前端代码与代理服务器之间的通信不会受到跨域限制。
3. JSONP(仅限 GET 请求):如果您只需要使用 GET 请求获取数据,您可以考虑使用 JSONP(JSON with Padding)来绕过跨域限制。JSONP 是一种利用 <script> 标签没有跨域限制的特性,动态创建一个带有回调函数的 <script> 标签来获取数据。但是,请注意 JSONP 只适用于 GET 请求,并且需要服务器的支持。
根据您的具体需求和控制权,选择上述方法中的适合您的一种来解决跨域问题。
相关问题
has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource.
这个错误信息说明在发送请求时,服务器返回的响应头中没有包含Access-Control-Allow-Origin字段,导致浏览器拒绝接受该响应。这是由于跨域访问(Cross-Origin Resource Sharing,CORS)的限制所引起的。
为了解决这个问题,可以添加一个名为CorsConfig的配置类,其中配置了允许跨域访问的规则。具体做法是使用addCorsMappings方法将允许跨域访问的规则添加到CorsRegistry中,可以设置allowedOriginPatterns为"*",表示允许来自所有域的请求;allowedHeaders设置为CorsConfiguration.ALL,表示允许所有请求头;allowedMethods设置为CorsConfiguration.ALL,表示允许所有请求方法;allowCredentials设置为true,表示允许发送身份验证信息;maxAge设置为3600,表示设置响应缓存的最大时间。通过这个配置类,服务器会在响应头中添加Access-Control-Allow-Origin字段,从而允许跨域访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the ...](https://blog.csdn.net/qq_45800640/article/details/118422632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [corsyusha:简单快速的代理,可在针对现有API进行原型设计时绕过CORS问题,而不必担心CORS](https://download.csdn.net/download/weixin_42176612/18261495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [解决前后端跨域报错:has been blocked by CORS policy: No ‘Access-Control-Allow-Origin](https://blog.csdn.net/wsaicyj/article/details/127814374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
前端解决 has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
前端解决"CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource"的方法有几种。
一种解决方法是,在后端服务器的响应头中添加"Access-Control-Allow-Origin"字段,并将其值设置为前端域名,以允许该域名访问资源。例如,可以在后端代码中添加以下代码来解决该问题:
```
response.setHeader("Access-Control-Allow-Origin", "http://your-front-end-domain.com");
```
另一种解决方法是在前端代码中使用代理服务器来请求资源。代理服务器位于与后端服务器相同的域中,并在前端代码中将请求发送到代理服务器,然后由代理服务器再转发请求到后端服务器。这样可以避免CORS问题,因为请求是从与后端服务器相同的域发送的。可以使用Webpack Dev Server或Nginx等工具来设置代理服务器。
还有一种解决方法是在后端服务器上启用CORS。这样,后端服务器将在响应头中添加"Access-Control-Allow-Origin"字段,并将其值设置为"*",表示允许所有域名访问资源。请注意,这种方法可能会增加安全风险,因此需要谨慎使用。
最后,可以使用一些浏览器插件或扩展程序来绕过CORS限制。这些工具可以修改浏览器的请求头,从而允许跨域请求。
请根据你的具体情况选择适合的解决方法来解决"CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource"的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [解决前后端跨域报错:has been blocked by CORS policy: No ‘Access-Control-Allow-Origin](https://blog.csdn.net/wsaicyj/article/details/127814374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [前端跨域问题的解决方案Access to XMLHttpRequest at ‘http..’ from origin ‘null‘ has been blocked ...](https://blog.csdn.net/weixin_40756509/article/details/123730126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [corsyusha:简单快速的代理,可在针对现有API进行原型设计时绕过CORS问题,而不必担心CORS](https://download.csdn.net/download/weixin_42176612/18261495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文