Ajax跨域处理No 'Access-Control-Allow-Origin' header

Lasted 2019-12-31 12:05:42

has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present

Ajax跨域请求时会被浏览器限制,出现如上错误提示,W3C标准规定,如果需要实现不同域名之间资源共享,需要目标服务器返回一系列Headers,表明是否同意其他服务器访问资源。

详细情况可以参考:HTTP访问控制(CORS)

设置Header

1. 设置某个域名可以访问

<?php

#PHP
header("Access-Control-Allow-Origin: https://docsxyz.com");

2. 设置所有域名可以访问

<?php

#PHP
header("Access-Control-Allow-Origin: *");

#浏览器返回效果
#Access-Control-Allow-Origin: *

3.静态页面中设置

<meta http-equiv="Access-Control-Allow-Origin" content="*" />

 3.Nginx中设置

    add_header 'Access-Control-Allow-Origin' '*' always;
    add_header 'Access-Control-Allow-Credentials' 'true';

常见问题

The 'Access-Control-Allow-Origin' header contains multiple values '*, *',

如果在PHP和Nginx同时设置,Header中会出现多个'Access-Control-Allow-Origin',会出现如上错误,去掉一个即可。