Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置HTTP获取头Javascript_Javascript_Php_.htaccess_Get_Cors - Fatal编程技术网

设置HTTP获取头Javascript

设置HTTP获取头Javascript,javascript,php,.htaccess,get,cors,Javascript,Php,.htaccess,Get,Cors,我正在从不同的服务器检索图像文件,而不是从发送GET的服务器检索图像文件,我得到两个文件,一个位于另一个服务器上的/var/www/html/test/image1.png,另一个位于/var/www/html/test/inside/image2.png我正在获取这样的文件。我知道网址,然后我就这么做了 function convertToDataURLviaCanvasBOTH(url, callback, outputFormat){ var img = new Image(); img.

我正在从不同的服务器检索图像文件,而不是从发送GET的服务器检索图像文件,我得到两个文件,一个位于另一个服务器上的
/var/www/html/test/image1.png
,另一个位于
/var/www/html/test/inside/image2.png
我正在获取这样的文件。我知道网址,然后我就这么做了

function convertToDataURLviaCanvasBOTH(url, callback, outputFormat){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
    var canvas = document.createElement('CANVAS');
    var ctx = canvas.getContext('2d');
    var dataURL;
    canvas.height = this.height;
    canvas.width = this.width;
    ctx.drawImage(this, 0, 0);
    dataURL = canvas.toDataURL(outputFormat);
    callback(dataURL);
    canvas = null; 
};
img.src = url;
}

url1 = http://xxx.xxx.xx/test/image1.png;
url2 = http://xxx.xxx.xx/test/inside/image2.png

data1 = convertToDataURLviaCanvasBOTH(url1);
data2 = convertToDataURLviaCanvasBOTH(url2);
data1
工作得很好,我把它取了回来,但当它因
url2
而疲劳时,它失败了,我得到了错误

Image from origin 'http://xxx.xx.xx.x' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://sending-server.com' is therefore not allowed access.
当第二个文件夹位于第一个文件夹的子文件夹中时,为什么它适用于第一个文件夹而不适用于第二个文件夹

在根文件目录中,我还有

Header always set Access-Control-Allow-Origin "http://sending-server.com"
Header always set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header always set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
在.htaccess文件中,该文件应始终发送标题

以下是url1的请求头

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:192.67.64.41
If-Range:"1083f-52648757feb05"
Origin:http://sending-server.com
Range:bytes=2596-2596
Referer:http://sending-server.com/info.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
以及来自url2的请求头

Provisional headers are shown //THERE IS A WARING SYMBOL ON THIS LINE
Accept:image/webp,image/*,*/*;q=0.8
Origin:http://sending-server.com
Referer:http://sending-server.com/info.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id:A760326C-C02F-41C6-A4F6-4B46AA7BC1C3

谢谢

我不知道.htaccess的确切设置,但是.htaccess的正确设置是:

<FilesMatch "\.(php)$">
  <IfModule mod_headers.c>
     Header set Access-Control-Allow-Methods: POST, GET, OPTIONS
     ........
  </IfModule>
</FilesMatch>
如果bar.com愿意接受该操作,它可能会使用以下标题进行响应:

Access-Control-Allow-Origin: http://foo.com
Access-Control-Allow-Methods: PUT, DELETE

让我知道如果它不起作用

@JaromandaX我是这两个的所有者,请参见上文了解我的想法added@JaromandaX我想把.htaccess放在第一个目录中是否也适用于所有子目录?如何确定?您必须允许/test/inside/文件夹中的cross-origin才能做到这一点,您必须修改该文件夹中的配置文件folder@JayMar好的,一个更高的目录不也允许它在更低的目录中吗?当你说配置文件时,你的意思是修改我的httpd.conf吗?如果你使用的是apache,那么检查一下这个不起作用的文件,我的.htaccess只包含你在上面发布的内容和我在问题中发布的你没有的两行内容,文件匹配不意味着它只接受一个.php文件吗?我是从Javascript发送的?@spenf10 Change您允许方法添加选项,因为这是一个重要的选项,然后再试一次让我知道这也不起作用,我在上面的.htaccess中有这些,我也尝试了获取url2,但我得到了错误,还有什么会导致子目录出现问题?您的第二个请求没有标题来源。请在请求中添加标题,然后它就会工作。原点:对,但我如何添加标题?来源:sending-server.com去哪里?
Access-Control-Allow-Origin: http://foo.com
Access-Control-Allow-Methods: PUT, DELETE