admin管理员组

文章数量:1330164

I'm using jquery to post data to a server, the server received the data, but the chrome still shows the error :

XMLHttpRequest cannot load `myServer:63373/api/sendData`. Origin `myServer:63385` is not allowed by Access-Control-Allow-Origin. 

Here is my js code:

 $.ajax({
            type: 'POST',
            url: 'myServer:63373/api/SendData',
            crossdomain: true,
            async: true,
            data: myData,
            dataType: 'json',
            success: function(){ alert('success'); }
        });

The strange thing is that the 'success' shows up after the request, and the server did receive the data, but then the error message shows up in the console. Is there any way to avoid this message?

I'm using jquery to post data to a server, the server received the data, but the chrome still shows the error :

XMLHttpRequest cannot load `myServer:63373/api/sendData`. Origin `myServer:63385` is not allowed by Access-Control-Allow-Origin. 

Here is my js code:

 $.ajax({
            type: 'POST',
            url: 'myServer:63373/api/SendData',
            crossdomain: true,
            async: true,
            data: myData,
            dataType: 'json',
            success: function(){ alert('success'); }
        });

The strange thing is that the 'success' shows up after the request, and the server did receive the data, but then the error message shows up in the console. Is there any way to avoid this message?

Share edited Jan 16, 2014 at 1:30 cdeszaq 31.3k27 gold badges122 silver badges175 bronze badges asked Sep 25, 2013 at 9:27 EdgarEdgar 2821 gold badge3 silver badges13 bronze badges 4
  • possible duplicate of Ways to circumvent the same-origin policy – Quentin Commented Sep 25, 2013 at 9:44
  • @Quentin should probably check that it's not possible to work with the same-origin policy before trying to work around it. – David-SkyMesh Commented Sep 25, 2013 at 9:46
  • @David-SkyMesh — It seems reasonable to assume that the origins are different for a reason. – Quentin Commented Sep 25, 2013 at 9:50
  • @David-SkyMesh - and a large portion of the accepted answer on that question is ground that your answer retreds. – Quentin Commented Sep 25, 2013 at 9:50
Add a ment  | 

3 Answers 3

Reset to default 4

Thanks for all you answers above but I think I've found the way, before I solve this I was trying to use two ways, Setting Access-Control-Allow-Origin in ASP.Net MVC - simplest possible method with the 87 votes and 32 votes, I found the answers at two different places, and both applied them, but it didn't work. Early this week, I tried to delete the code in the web.config and just left the code in C#, it works! Can't believe these two solutions have confliction.

Anyway, hope this could help others.

"not allowed by Access-Control-Allow-Origin" is the reason. Put simply, you can't normally do an XHR call to a different domain/port/protocol from those of the webpage your javascript was included into.

Modern browsers allow you work around this with permission from the server administrator.

You make your Ajax request with the XHR2 API (http://www.html5rocks./en/tutorials/cors/)

The on the server side, you need to emit the following headers to allow access from the domain that served the page that included your javascript:

Access-Control-Allow-Origin: http://your-page-domain.
Access-Control-Allow-Credentials: true

if situation are

  • your script is hosted on another server

  • or subdomain

  • or try to hit url with another port

this is cross-domian request. jquery can not fulfill cross-domain request.

if this is your issue , then you should use jsonp for this "jsonp " allows cross domain request.

try to do this with using jsonp.

for jsonp every call has a callback means there will be a value in url and you have to send respnse with this call back in php

means try this:-

$.ajax({
        type: 'POST',
        url: 'myServer:63373/api/SendData',
        crossdomain: true,
        async: true,
        data: myData,
        dataType: 'jsonp',
        success: function(){ alert('success'); }
    });

and in php

wrap your response in  $_GET['_callback']."(".$response.")"; and echo it

you will get response in json .

本文标签: javascriptChrome shows Access Control Allow Origin errorStack Overflow