什么是跨域?
浏览器的同源策略(Same origin policy),它是一种约定,也是浏览器最核心最基本的安全功能。所谓同源指的是:协议(是指http和https)、域名(domain)、端口(port)相同。
解决办法
在php后端api入口文件中加入下面的代码即可解决问题:
header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE"); header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");
相关说明
CORS
CORS是一个W3C标准,全称是“跨域资源共享”(Cross-origin resource sharing),它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了只能同源调用的限制。
Access-Control-Allow-Origin
Access-Control-Allow-Origin指的是允许发起跨域的域名。
在浏览器跨域请求中,请求头(request headers)会出现Origin字段(有个奇怪现象,谷歌游览器在非跨域情况下,也会发送origin字段),这个字段会与Access-Control-Allow-Origin字段的内容进项匹配,如果发现符合Access-Control-Allow-Origin字段的要求才会放行通过,否则会出现CORS错误。
但实际上Access-Control-Allow-Origin有很多的设置方式,“*”是最粗暴简单的,但也是最不安全的,它代表着所有请求都允许通过。如果为了服务器安全考虑不建议这么设置,最好还是使用具体的域名地址。而且如果是“*”的话,浏览器将不会发送cookies,即使你的xhr设置了withCredentials,只有在指定域名下才允许发送。
Access-Control-Allow-Methods
Access-Control-Allow-Methods指的是请求的方式。
Access-Control-Allow-Headers
Access-Control-Allow-Headers指的是请求的自定义请求头字段。
跨域时浏览器会向服务器发送预检请求,询问是否支持跨域的自定义header字段,这时候就需要设置的Access-Control-Allow-Headers字段进行应答。
- 本文链接: https://www.shx1024.top//index/article/details/article_id/9.shtml
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。