我已经在其他域中包含了这个javascript:
var id = "<?php echo check_input($_GET['token']); ?>";
var querystring = "";
var lockerurl = "https://www.example.com/contentlocker/getlocker.php?" + 'id=' + encodeURIComponent(id) + '&r=' + encodeURIComponent(referrer) + querystring;
var iframecontents;
var old_display;
function optionstoquery(options) {
var query = "";
if (options.mt) query += "&mt=" + encodeURIComponent(options.mt);
if (options.dt) query += "&dt=" + encodeURIComponent(options.dt);
if (options.dd) query += "&dd=" + encodeURIComponent(options.dd);
if (options.md) query += "&md=" + encodeURIComponent(options.md);
return query;
}
function og_load(options) {
if (options) lockerurl += optionstoquery(options);
//preload
var xhr = new XMLHttpRequest();
xhr.open('GET', lockerurl, true);
xhr.onreadystatechange = function() {
if (this.readyState!==4) return;
if (this.status!==200) {
iframecontents = false;
return;
}
iframecontents = this.responseText;
};
xhr.send();
ogEditBody();
}
控制台它向我显示:
跨源请求被阻止:同源策略不允许读取 位于的远程资源 https://www.example.com/contentlocker/getlocker.php?id=3e066b64a78214a17620b5521b6d3ec4&r=aHR0cDovL2NwYWh1Yi51cy9yb29zdGVyMi5odG1s。 (原因:缺少 CORS 标头"访问控制-允许源"(。
getlocker.php包含一些PHP和HTML代码!
我使用 Plesk 作为网络服务器,我尝试通过添加 getlocker.php:
header('Access-Control-Allow-Origin: *');
但仍然不起作用!
CORS 标头必须在主页请求中发送,因此,如果您在发送嵌入式 scrip 时仅设置它,那是不够的。
这是PHP文件中的第一行吗?
header("Access-Control-Allow-Origin: *");
另外,尝试在 AJAX 调用或 HTTPRequest 中发送crossDomain: true
。
从服务器端,在 Linux 服务器上,您可以在 Web 服务器配置中设置所需的标头:
对于 Plesk 中的源域example.com
,请转到Domains > example.com > Apache and nginx settings
并在Additional directives for HTTP
和Additional directives for HTTPS
中添加以下指令:
Header set Access-Control-Allow-Origin "*"
或者,在这种情况下,可以使用.htaccess
包含以下内容的文件:
<IfModule mod_headers.c>p
Header always set Access-Control-Allow-Origin "*"
</IfModule>
如果启用了 Nginx 并且需要显示静态内容,请在不带 Apache 指令Additional nginx directives
字段中使用以下指令:
add_header Access-Control-Allow-Origin "*";