CORS:No' Access-Control-Allow-Origin'标头 - 但php设置头文件

时间:2016-05-14 06:38:06

标签: javascript php jquery ajax cors

我知道有几个问题关于cors已经被解答/回答......但是我找不到解决问题的方法......

我在js应用程序中收到以下错误消息(基于jquery / jquery mobile):

无法加载资源:服务器响应状态为500(内部服务器错误)

XMLHttpRequest无法加载http://www.mydomain.de/api.php。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' xyz'因此不允许访问。响应的HTTP状态代码为500

PHP文件以:

开头
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS");
header("Access-Control-Max-Age: 86400");    // cache for 1 day
...

部分js代码:

$.ajax({
 type:      'POST',
 crossDomain: true,    
 cache:         false,
 url:       "http://www.mydomain.de/api.php",
 data:      payload,
 dataType:  'json',
 success:   function(a,b,c) { }
});

php页面托管在strato.de / php version 5.7

任何解决方案?

3 个答案:

答案 0 :(得分:1)

您可以将dataType用作JsonP

 dataType: 'jsonp'

然后你没有得到错误

答案 1 :(得分:0)

在您的项目中,找到文件web.config文件。 (我在laravel中工作,我在公共路径中找到该文件,您在其他路径中找到它),现在在<system.webServer>

之后添加以下代码
<httpProtocol>  
    <customHeaders>  
     <add name="Access-Control-Allow-Origin" value="*" />  
     <add name="Access-Control-Allow-Headers" value="Content-Type" />  
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />  
    </customHeaders>  
</httpProtocol>

Screenshot: write code

我认为这会很好地工作。

答案 2 :(得分:0)

如果第一个解决方案不起作用,则另一个解决方案是: 打开您的防病毒软件,找到“ 病毒箱”选项,并在列表中查找文件“ 'server.php” ,如果找到此文件,则应用还原并添加例外