我为我的项目创建了一个API,但我遇到了一个问题。我正在使用Laravel 4.2。我创建了一个返回JSON字符串的控制器。在我的控制器下面:
控制器:
public function license($value)
{
$array = ['test' => 'Nummer oneindigt'];
return json_encode($array);
}
之后我开始制作我的AJAX脚本:
//$site = "http://app.moldersmedia.nl/api/key/value/license.json";
$site = "http://app.dev/api/key/value/license.json";
$(document).ready(function() {
$.ajax({
url: $site,
crossDomain: true,
data: 'my_request_is=foo',
method: 'GET',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function(json){
alert('Request is geslaagd')
},
error: function(jqxhr, textStatus, error){
console.log(jqxhr);
console.log(textStatus);
console.log(error);
}
});
});
所以在那之后我遇到了一些问题:Access-Control-Allow-Origin
。经过一些研究,我发现我需要修改我的.htaccess
,这就是我所做的。在我的.htaccess
下方
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
</IfModule>
现在它使用此代码从1个本地环境工作到另一个环境。所以在那之后我上传了我的应用程序在线测试。这还不行。我收到了一些错误。有人能告诉我发生了什么吗?您可以看到将JavaScript粘贴到HTML文档中的错误,并取消注释app.moldersmedia.nl链接。
我收到错误:
XMLHttpRequest cannot load http://app.moldersmedia.nl/api/key/value/license.json?my_request_is=foo. The 'Access-Control-Allow-Origin' header contains multiple values 'http://default, *', but only one is allowed. Origin 'http://default' is therefore not allowed access.