from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested
时间: 2023-11-08 13:05:02 浏览: 65
CORS (Cross-Origin Resource Sharing) 错误是因为浏览器的安全策略限制导致的。当在浏览器中进行跨域请求时,如果服务器没有正确设置响应头中的 Access-Control-Allow-Origin 字段,就会报这个错误。
解决办法是在服务器端设置正确的响应头。具体方法取决于你使用的服务器语言和框架。
以下是一些常见的解决方法:
1. 对于 Node.js 可以使用 Express 框架,在响应中添加如下代码:
```javascript
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
res.header("Access-Control-Allow-Headers", "Content-Type");
next();
});
```
2. 对于 PHP,可以在代码中添加如下代码:
```php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
```
3. 对于其他服务器端语言和框架,可以查阅相应的文档,了解如何设置响应头。
相关问题
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 ]
from origin 'null' has been blocked by cors policy: no 'access-control-allow-origin' header is present on the requested resource.
### 回答1:
这是因为网站未在响应头中添加 "Access-Control-Allow-Origin" 字段,导致浏览器无法访问跨域资源。可以尝试在请求中添加 "Access-Control-Allow-Origin" 字段或者在服务器端配置跨域访问。
### 回答2:
“来自原始来源‘null’的跨域请求被阻止,因为请求的资源没有‘access-control-allow-origin’头部。”这个错误信息通常出现在Web开发中,意思是请求一个跨域资源时,服务器没有在响应中添加明确的访问控制允许来源头部,导致浏览器拒绝了该请求的响应。
所谓“跨域资源”,是指来自不同域名、端口或协议的资源,如从a.com请求b.com的资源。浏览器安全策略限制了Web页面只能访问同源资源,即协议、域名和端口号都必须相同。因此,跨域请求时需要服务器设置响应头部,允许请求来自不同域的资源。
解决这个问题,有以下几种方法:
1.添加跨域资源共享CORS头部(Access-Control-Allow-Origin):在响应中增加允许访问该资源的源地址,如Access-Control-Allow-Origin: http://example.com。
2.使用JSONP(JSON with Padding):利用script标签可以跨域访问的特性,通过在请求URL中添加callback参数,将请求转化为script标签形式,返回的响应会自动执行回调函数。但JSONP也有一些限制,如只能GET请求、安全性问题等。
3.通过代理服务器:将跨域请求的代理放在同源服务器上请求,再通过AJAX获取代理服务器返回的数据。但代理可能会带来额外的开销和安全问题。
总之,跨域请求是Web开发中经常遇到的问题,开发者需要了解相关的安全策略和解决方案,避免出现错误或安全漏洞。
### 回答3:
这是一个跨域资源共享(CORS)的错误提示。CORS是一种Web浏览器安全机制,用于限制跨域HTTP请求的访问。当一个网站通过AJAX请求访问另外一个网站时,由于CORS机制的限制,可能会导致请求被拒绝。
在这个错误提示中,'null'代表请求的来源为null,这通常是因为浏览器的安全策略不允许访问同一源以外的资源。浏览器通过发送一个预检请求(Preflight Request)来判断是否允许跨域请求,如果服务器返回的响应中没有包含Access-Control-Allow-Origin头部,则浏览器会拒绝该跨域请求。
解决这个问题的方法是在服务器端添加Access-Control-Allow-Origin头部,以允许指定的源访问资源。也可以使用代理服务器或JSONP等技术来实现跨域请求。另外,浏览器也提供了一些插件可以绕过CORS的限制,但是这种做法不太安全,不建议在生产环境中使用。
阅读全文