跨域的JS变量

时间:2017-07-19 09:09:46

标签: jquery ajax http https cross-domain

问题

我想从另一个HTTPS域接收javascript变量,但是我收到了错误。

我尝试过的事情

这是我能够获得的最简化的代码版本,但仍会产生上述问题。

    public View getView(final int position, View convertView, ViewGroup parent) {

        View vi = convertView;
        SpinnerListAdapter.ViewHolder holder;

        if(convertView==null){
            vi = inflater.inflate(R.layout.spinner_item_row, null);
            holder = new SpinnerListAdapter.ViewHolder();
            holder.tv_itemname = (TextView) vi.findViewById(R.id.tv_itemname);
            vi.setTag( holder );
        }
        else
        {
            holder = (SpinnerListAdapter.ViewHolder) vi.getTag();
        }


        if (position == 0)
        {
            holder.tv_itemname.setText("Choose one of the following category");
        }else{
            holder.tv_itemname.setText(itemList[position]);
        }

        return vi;
    }

我也试过

 $.ajax({
          url: "https://www.example.com/page.asp",
          crossDomain:true,
          success:function(data){
                alert("success")
          },
          error : function() {
             alert("error")
          }
      });

并且以下代码也添加在远程页面

$.ajax({
          url: "https://www.example.com/page.asp",
          dataType: "jsonp",
          cache: true,
          success:function(data){
                alert("success")
          },
          error : function(XMLHttpRequest, textStatus, errorThrown) {
             alert("error")
          }
      });

它不起作用,因为它会出现以下错误:

  

' https://example.com'被CORS政策阻止:没有   '访问控制允许来源'标题出现在请求的上   资源。起源' http://example.com'因此不允许访问。

问题

所以我的基本问题是,如何从HTTPS页面到HTTP页面接收javascript变量?

2 个答案:

答案 0 :(得分:1)

您是否尝试过在web.config中设置? 我只在asp.net web api中使用它,并且在其中有一个用于管理cors的dll。

<httpProtocol>
        <customHeaders>
            <clear />
            <add name="X-Powered-By" value="ASP.NET" />
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Allow-Headers" value="Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time"/>
                <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS"/>
                <add name="Access-Control-Allow-Credentials" value="true"/>
        </customHeaders>
        <redirectHeaders>
            <clear />
        </redirectHeaders>
    </httpProtocol>

答案 1 :(得分:0)

我终于设法通过以下代码接收javascript变量:

$.ajax({
   method: "GET",
   url: "http://www.example.com/test.js",
   dataType: "script",
   success:function(data){
     alert(variable)
   }
});

谢谢。