Member 12857222 Ответов: 2

Веб-сервис работает только при звонке из локальной сети


Привет,

веб сервис работает при звонке с локального не работает звонок с другого хостинга

я создаю веб-сервис для добавления данных (отправленных с сервера anther) в мои данные

Код веб-службы
public string SaveData(string resultData) //save data to database
       {

       sa_asdm.DLR service = new sa_asdm.DLR();
           RootObject obj = JsonConvert.DeserializeObject<RootObject>(resultData);

         /*string filePath = Server.MapPath("~/Error.txt");

           using (StreamWriter writer = new StreamWriter(filePath, true))
           {
               writer.WriteLine("Json is sent :" + resultData +
                  "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
               writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
           } */

              foreach (JsonData item in obj.results)
                  {
                      {
                          var connStr = ConfigurationManager.ConnectionStrings["myCon1"].ConnectionString;
                          SqlConnection con = new SqlConnection(connStr);
                          try
                          {
                              //------------------------------------

                              //------------------------------------
                              SqlCommand cmd = new SqlCommand("[insert_RDL]", con);
                              cmd.CommandType = CommandType.StoredProcedure;
                              cmd.Parameters.AddWithValue("@msgId", item.msgId);
                              cmd.Parameters.AddWithValue("@to_mobile", item.to);
                              cmd.Parameters.AddWithValue("@status", item.status);
                              con.Open();
                              cmd.ExecuteNonQuery();
                          }
                          finally
                          {
                              //
                          }
                      }
                  }
           return "OK ";
       }


например отправленная страница :

<script type="text/javascript">
   //  var tt = "[{ 'status': 500, 'ResponseStatus': 'NotConnect' }]";

     var json = '{"results": [{"msgId": "001","to": "9665312114","status": "D"}, {"msgId": "859911880","to": "966535112578","status": "N"}, {"msgId": "859911880","to": "966535112579","status": "S"}]}';
         $.ajax({
             type: "POST",
             url: "http://website1.com/DLR.asmx/SaveData",
             contentType: "application/json; charset=utf-8",
             data: JSON.stringify({ resultData: json }),// pass json string to web service
             traditional: true,
             processData: false ,
             success: function (data) { }

         });
 </script>


веб-сервиса в веб-сайте1

когда я публикую json из тот же сервер : http://website1.com/sent.aspx работающий

Но когда я публикую json из другой сервер например : اttp://website2.com/sent.aspx Не работать

-------------------------------------------------------

Что я уже пробовал:

я его словил и добавляю этот код в web.config
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, PUT, DELETE" />
      <add name="Access-Control-Allow-Headers" value="content-type,soapaction,x-requested-with" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

[no name]

Проверьте URL-адрес в компоненте Ajax.Так и должно быть http://website2.com/DLR.asmx/SaveData

F-ES Sitecore

Используйте такой инструмент, как Fiddler, или инструменты разработки вашего браузера (f12->network), чтобы посмотреть на ответ, это может быть проблема CORS, если это так, google для получения дополнительной информации + решения.

ZurdoDev

Вы должны это отладить. Мы не можем видеть, что происходит.

Member 12857222

можете ли вы проверить :
http://asdm.sa/Sent.aspx эта работа, потому что в ту же веб-службу сервера

http://exams.medu.sa/sent.aspx это не сработает

2 Ответов

Рейтинг:
2

Member 12857222

когда я отправляю сообщение http://asdm.sa/Sent.aspx возврат такой : ОК
этот код от F12

Request URL:http://asdm.sa/DLR.asmx/SaveData<br />
Request Method:POST<br />
Status Code:200 OK<br />
Remote Address:67.209.123.6:80<br />
Referrer Policy:no-referrer-when-downgrade<br />
Response Headers<br />
view source<br />
Cache-Control:private, max-age=0<br />
Content-Length:11<br />
Content-Type:application/json; charset=utf-8<br />
Date:Mon, 29 Jan 2018 16:31:58 GMT<br />
Server:Microsoft-IIS/10.0<br />
X-AspNet-Version:4.0.30319<br />
X-Powered-By:ASP.NET<br />
X-Powered-By-Plesk:PleskWin<br />
Request Headers<br />
view source<br />
Accept:*/*<br />
Accept-Encoding:gzip, deflate<br />
Accept-Language:ar,en-US;q=0.9,en;q=0.8<br />
Connection:keep-alive<br />
Content-Length:237<br />
Content-Type:application/json; charset=UTF-8<br />
Host:asdm.sa<br />
Origin:http://asdm.sa<br />
Referer:http://asdm.sa/Sent.aspx<br />
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36<br />
X-Requested-With:XMLHttpRequest<br />
Request Payload<br />
view source<br />
{,…}<br />
resultData<br />
:<br />
"{"results": [{"msgId": "001","to": "9665312114","status": "D"}, {"msgId": "859911880","to": "966535112578","status": "N"}, {"msgId": "859911880","to": "966535112579","status": "S"}]}"


Но когда я отправляю сообщение http://exam.medu.sa/sent.aspx не возвращайся ОК
Этот код от F12 :
Request URL:http://asdm.sa/DLR.asmx/SaveData<br />
Request Method:OPTIONS<br />
Status Code:200 OK<br />
Remote Address:67.209.123.6:80<br />
Referrer Policy:no-referrer-when-downgrade<br />
Response Headers<br />
view source<br />
Allow:OPTIONS, TRACE, GET, HEAD, POST<br />
Content-Length:0<br />
Date:Mon, 29 Jan 2018 16:10:24 GMT<br />
Public:OPTIONS, TRACE, GET, HEAD, POST<br />
Server:Microsoft-IIS/10.0<br />
X-Powered-By:ASP.NET<br />
X-Powered-By-Plesk:PleskWin<br />
Request Headers<br />
view source<br />
Accept:*/*<br />
Accept-Encoding:gzip, deflate<br />
Accept-Language:ar,en-US;q=0.9,en;q=0.8<br />
Access-Control-Request-Headers:content-type<br />
Access-Control-Request-Method:POST<br />
Connection:keep-alive<br />
Host:asdm.sa<br />
Origin:http://localhost:59707<br />
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36


Richard Deeming

Если вы хотите обновить свой вопрос, Нажмите зеленую ссылку "улучшить вопрос" и отредактируйте свой вопрос.

НЕ опубликуйте свое обновление как "решение".

Рейтинг:
18

David_Wimbley

Ваша проблема заключается в том, что вы пытаетесь сделать запрос из домена а к веб-службе в домене в с помощью клиентского javascript. Проблема, с которой вы столкнулись, заключается в том, что общий доступ к ресурсам cross origin блокирует ваш запрос к веб-службе в домене A.

В принципе, если вы можете это сделать, вам нужно включить запросы CORS для вашего веб-сервиса.

Я думаю, что у вас есть 2 варианта

* Я не знаю, является ли это веб-api, но вам нужно выяснить, как включить запросы cors к вашему веб-сервису.
Гугл[^]

включить cors в asp.net mvc - поиск в Google[^]

Гугл[^]

Эти 3 поиска google имеют массу релевантных ссылок, вам нужно будет сделать всю работу самостоятельно, чтобы выяснить, что будет работать для вашего проекта.

* Другой вариант заключается в том, что вы добавляете метод/действие на стороне сервера в свой проект, где затем корректируете свой $.ajax вызовите свой клиентский вызов, и из этого недавно добавленного кода на стороне сервера вы сделаете вызов веб-службе домена а, которая обходит проблему CORS.


Laxmidhar tatwa technologies

Да, это актуально, но могут возникнуть некоторые проблемы с безопасностью