如何使用javascript解决客户端问题“否'Access-Control-Allow-Origin'标题”

时间:2015-07-24 05:44:38

标签: javascript ajax cors

我正面临这个问题 - >请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:63342”访问。响应具有HTTP状态代码403。 但我只需要在客户端解决此问题。我无法编码服务器端。限制只是javascript,如果可能的话,然后是ajax。 任何人都可以帮忙。

2 个答案:

答案 0 :(得分:0)

您可以遵循的解决方案很少 - Chrome浏览器中的第一个解决方案禁用安全性[不建议]

  • 关闭Chrome浏览器。
  • 打开终端。只需输入此命令即可。

    alias chrome =“open / Applications / Google \ Chrome.app / --args --disable-web-security”

  • 重新启动Chrome。如果成功禁用了chrome安全性,则应在chrome视图的顶部看到黄色警告栏。

第二个解决方案 将dataType参数修改为dataType:'jsonp'

$.ajax({
  url: 'your domain url',
  data: myData,
  type: 'GET',
  crossDomain: true,
  dataType: 'jsonp',
  success: function() { alert("Success"); },
  error: function() { alert('Failed!'); },
  beforeSend: setHeader
});

第3个解决方案 - 在服务器端将标题keys/values放入选项方法响应中

void handleRequest(Request request, Response response) {
    if(request.method == "OPTIONS") {
       response.setHeader("Access-Control-Allow- Origin","Your_Domain")
       response.setHeader("Access-Control-Allow-Methods",  "GET,POST,PUT,DELETE,OPTIONS");
       response.setHeader("Access-Control-Allow-Headers", "Content-Type");
   }
}

第四个解决方案如果setHeader不起作用,那么您可以尝试使用addHeader

使用addHeader - > response.addHeader("Access-Control-Allow-Origin", "*");

答案 1 :(得分:0)

尝试将header('Access-Control-Allow-Origin: *');放入您的php文件服务器端代码,如下所示:

<?php
    $host = "localhost";
    $username= "root";
    $pass = "12354";
    $dbname = "taxi_booking";

    $conn = mysql_connect($host, $username, $pass);
    mysql_select_db($dbname, $conn);

    mysql_query("SET NAMES 'utf8'");
    header('Access-Control-Allow-Origin: *');
?>